Erro alterar registro(MYsql) Transactions are not enabled’.

Delphi

23/07/2003

:cry: :cry:
Estava usando access e este código dava certo para alterar o registro agora migrei para mysql e quando dou o post dá esta mensagem de erro
Project cobradora.exe raised exception class EDBEngineError with message
‘Capability not supported.
[MYSQL][ODBC 3.51 Driver] Transactions are not enabled’.
Segue o código abaixo se puderem alterar para o certo

procedure Tfrmclientes.BtgravarClick(Sender: TObject);
begin
DataModule1.tblcliente.Active:=true;
begin
// POSICIONA O PONTEIRO NO REGISTRO DESEJADO
DataModule1.tblcliente.IndexName:=´Icodcli´;
DataModule1.tblcliente.FindKey([strtoint(edtcodigo.Text)]);
DataModule1.tblcliente.Edit;
DataModule1.tblclienteNomCli.Value:=edtnome.Text;
DataModule1.tblclienteEndCli.Value:=edtendereco.Text;
DataModule1.tblclienteBairrocli.Value:=edtbairro.Text;
DataModule1.tblclienteCepcli.Value:=edtcep.Text;
DataModule1.tblclienteCidCli.Value:=edtcidade.Text;
DataModule1.tblclienteEstCli.Value:=edtuf.Text;
DataModule1.tblclientecelularcli.Value:=edtcelular.Text;
DataModule1.tblclienteFonCli.Value:=edtfone.Text;
DataModule1.tblclientefonerec1.Value:=edtrecado1.Text;
DataModule1.tblclientefonerec2.Value:=edtrecado2.Text;
if cbpessoa.ItemIndex=0 then
DataModule1.tblclientefisica.Value:=´1´;
if cbpessoa.ItemIndex=1 then
DataModule1.tblclientefisica.Value:=´2´;
if edtcpf.Text<>´´then
DataModule1.tblclienteCPFCli.Value:=edtcpf.Text
else
DataModule1.tblclienteCPFCli.Value:=edtcnpj.Text;
if edtrg.Text<>´´then
DataModule1.tblclienteRGCli.Value:=edtrg.Text
else
DataModule1.tblclienteRGCli.Value:=edtinscricao.Text;
if edtnasc.Text<>´´then
DataModule1.tblclientedtnascli.Value:=StrToDate(edtnasc.Text)
else
DataModule1.tblclientedtnascli.Clear;
DataModule1.tblclienteempresa.Value:=edttrabalho.Text;
DataModule1.tblclientecargo.Value:=edtcargo.Text;
DataModule1.tblclientefoneempre.Value:=edtfoneemp.Text;
DataModule1.tblclienteramal.Value:=edtramal.Text;
if cbcivil.ItemIndex=0 then
DataModule1.tblclientecivil.Value:=´1´;
if cbcivil.ItemIndex=1 then
DataModule1.tblclientecivil.Value:=´2´;
DataModule1.tblclientenomconj.Value:=edtconj.Text;
if edtnascon.Text<>´´then
DataModule1.tblclientedtnasconj.Value:=StrToDate(edtnascon.Text)
else
DataModule1.tblclientedtnasconj.clear;
dataModule1.tblclienteempresaconj.Value:=edttrabconj.Text;
DataModule1.tblclientecargoconj.Value:=edtcargoconj.Text;
DataModule1.tblclientefoneempreconj.Value:=edtfoneempconj.Text;
DataModule1.tblclienteramalconj.Value:=edtramalconj.Text;
DataModule1.tblclientenomepai.Value:=edtpai.Text;
DataModule1.tblclientenomemae.Value:=edtmae.Text;
DataModule1.tblclientefonepais.Value:=edtfonemae.Text;
DataModule1.tblclienteocorrencia.Value:=Memo1.Text;
if edt1ret.Text<>´´then
DataModule1.tblclienteretorno1.Value:=StrToDate(edt1ret.Text)
else
DataModule1.tblclienteretorno1.Clear;
if edt2ret.Text<>´´then
DataModule1.tblclienteretorno2.Value:=StrToDate(edt2ret.Text)
else
DataModule1.tblclienteretorno2.clear;
if edt3ret.Text<>´´then
DataModule1.tblclienteretorno3.Value:=StrToDate(edt3ret.Text)
else
DataModule1.tblclienteretorno3.Clear;
if edt4ret.Text<>´´then
DataModule1.tblclienteretorno4.Value:=StrToDate(edt4ret.Text)
else
DataModule1.tblclienteretorno4.clear;
if edt5ret.Text<>´´then
DataModule1.tblclienteretorno5.Value:=StrToDate(edt5ret.Text)
else
DataModule1.tblclienteretorno5.Clear;
if edt6ret.Text<>´´then
DataModule1.tblclienteretorno6.Value:=StrToDate(edt6ret.Text)
else
DataModule1.tblclienteretorno6.Clear;
DataModule1.tblclientedatacad.Value:=date;
edtdtcad.Enabled:=true;
DataModule1.tblclientecodusu.Value:=frmprincipal.edtusuario.Text;
DataModule1.tblcliente.Post;
DataModule1.tblcliente.Refresh;
Btgravar.Enabled:=False;
BtIncluir.Enabled:=true;
BtAlterar.Enabled:=true;
btconsultar.Enabled:=true;
BtExcluir.Enabled:=false;
btlimparClick(btlimpar);
DataModule1.qryconscli.SQL.clear;
DataModule1.tblcliente.Active:=false;
end;
end;

Vi no site para alterar criar a tabela do tipo Innodb , alterei a tabela para este tipo e continuaa com o mesmo erro, mas inserir um novo registro consigo, mas alterar não


Marcos_jmgj

Marcos_jmgj

Curtidas 0

Respostas

Mikemurussi

Mikemurussi

23/07/2003

Não use FindKey, por inúmeros motivos (principal é a performance) e tão pouco abra uma tabela inteira para depois posicionar em um registro específico. Use intruções SQL.

Como no seu caso você quer apenas alterar um registro em específico, basta uma intrução Update.

Ex.:

qryXXX.sql.Text := ´UPDATE Clientes SET Nome = :Nome
WHERECodigo = : Codigo´;
qryXXX.ParamByName(´Codigo´).AsInteger := xxxx;
qryXXX.ParamByName(´Nome´).AsString := EditQualquerCoisa.Text;

Espero ter ajudado.

[url]www.murussi.com.br[/url][/url]


GOSTEI 0
POSTAR