Erro alterar registro(MYsql) Transactions are not enabled’.
: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
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
Curtidas 0
Respostas
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]
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