Fórum Erro alterar registro(MYsql) Transactions are not enabled’. #170966
23/07/2003
0
: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
Curtir tópico
+ 0
Responder
Posts
23/07/2003
Mikemurussi
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]
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)