Fórum Problema em um UPDATE via query. #225837
13/04/2004
0
tenho uma tabela em mysql, na qual acesso com o componente zeoslib.
tenho vários campos, todos eles do tipo varchar, exceto o ´Codigo´ (Int(+)).
em um append eu puxo os dados da grid e jogo eles no edit, tudo certo ate ai, mas, na hora de atualizar, nao estou conseguindo dar um Update..
abaixo segue minha rotina:
Sql.Text := ´Update tbFuncionarios ´+ ´ Set Nome = :00,´+ ´ Endereco = :01,´+ ´ Bairro = :02,´+ ´ Cidade = :03,´+ ´ CartProfissional = :04,´+ ´ SeriedaCart = :05,´+ ´ Cpf = :06,´+ ´ Profissao = :07,´+ ´ Cep = :08,´+ ´ Cbo = :09,´+ ´ scontrato = :10,´+ ´ identidade = :11,´+ ´ ssp = :12,´+ ´ sal_base = :13,´+ ´ DataNasc = :14,´+ ´ DataAdm = :15 ´+ ´ Where Codigo = Codigo ´; Params[00].asString := edNome.Text; // Nome Params[01].asString := edEnd.Text; // Endereço Params[02].asString := edBairro.Text; // Bairro Params[03].asString := edCidade.Text; // Cidade Params[04].asString := edCarteiraProf.Text; // CartProfissional Params[05].asString := edSerie.Text; // SeriedaCart Params[06].asString := edCpf.Text; // Cpf Params[07].asString := edProfissao.Text; // Profissao Params[08].asString := edCep.Text; // Cep Params[09].asString := edCbo.Text; // Cbo Params[10].asString := edscontrato.Text; // scontrato Params[11].asString := edIdentidade.Text; // Identidade Params[12].asString := edSsp.Text; // SSP Params[13].asString := edSalario.Text; // sal_base Params[14].asString := edDataNasc.Text; // DataNasc Params[15].asString := edDataAdm.Text; // DataAdm ExecSql;
o erro é este:
[img:8623cdcad8]http://www.seek.srv.br/otto/fotos/erros/erro_mysql.jpg[/img:8623cdcad8]
obrigado...
Otto
Curtir tópico
+ 0Posts
13/04/2004
G1b4
.
.
.
ParamByName[´00´]:=....
.
.
.
FLWS :D :D :D :D
[i:441e79e2ad]>g1b4<
Programador Delphi[/i:441e79e2ad]
Gostei + 0
13/04/2004
G1b4
Não vi q era Params...
Use ao invés de Params
ParaByName[´00´].AsString:=...
Ok?
Gostei + 0
14/04/2004
Emerson Nascimento
                        ´     Set Nome                         = :Nome,´+
                        ´             Endereco                 = :Endereco,´+
                        ´             Bairro                     = :Bairro,´+
                        ´             Cidade                     = :Cidade,´+
                        ´             CartProfissional = :CartProfissional,´+
                        ´             SeriedaCart           = :SeriedaCart,´+
                        ´             Cpf                           = :Cpf,´+
                        ´             Profissao               = :Profissao,´+
                        ´             Cep                           = :Cep,´+
                        ´             Cbo                           = :Cbo,´+
                        ´             scontrato               = :scontrato,´+
                        ´             identidade             = :identidade,´+
                        ´             ssp                           = :ssp,´+
                        ´             sal_base                 = :sal_base,´+
                        ´             DataNasc                 = :DataNasc,´+
                        ´             DataAdm                   = :DataAdm ´+
                        ´ Where Codigo = :Codigo´;
ParamByName(´Nome´).asString := edNome.Text;       // Nome
ParamByName(´Endereco´).asString := edEnd.Text;         // Endereço
ParamByName(´Bairro´).asString := edBairro.Text;   // Bairro
ParamByName(´Cidade´).asString := edCidade.Text;   // Cidade
ParamByName(´CartProfissional´).asString := edCarteiraProf.Text; // CartProfissional
ParamByName(´SeriedaCart´).asString := edSerie.Text;           // SeriedaCart
ParamByName(´Cpf´).asString := edCpf.Text;               // Cpf
ParamByName(´Profissao´).asString := edProfissao.Text;   // Profissao
ParamByName(´Cep´).asString := edCep.Text;               // Cep
ParamByName(´Cbo´).asString := edCbo.Text;               // Cbo
ParamByName(´scontrato´).asString := edscontrato.Text;   // scontrato
ParamByName(´identidade´).asString := edIdentidade.Text; // Identidade
ParamByName(´ssp´).asString := edSsp.Text;               // SSP
ParamByName(´sal_base´).asString := edSalario.Text;       // sal_base
ParamByName(´DataNasc´).asString := edDataNasc.Text;     // DataNasc
ParamByName(´DataAdm´).asString := edDataAdm.Text;       // DataAdm
ParamByName(´Codigo´).asInteger := CodigoQueSofrerahAlteracao
ExecSql;
Gostei + 0
14/04/2004
Otto
tipo,,
ParamByName nao rolou nao...
outra, Codigo nao muda nao, Codigo é o unico que nao será alterado, ele é apenas o meu guia....
obrigado...
Gostei + 0
14/04/2004
Otto
Gostei + 0
14/04/2004
Otto
Sql.Text := ´Update tbFuncionarios ´+ ´ Set Nome = :00,´+ ´ Endereco = :01,´+ ´ Bairro = :02,´+ ´ Cidade = :03,´+ ´ CartProfissional = :04,´+ ´ SeriedaCart = :05,´+ ´ Cpf = :06,´+ ´ Profissao = :07,´+ ´ Cep = :08,´+ ´ Cbo = :09,´+ ´ scontrato = :10,´+ ´ identidade = :11,´+ ´ ssp = :12,´+ ´ sal_base = :13,´+ ´ DataNasc = :14,´+ ´ DataAdm = :15 ´+ ´ Where Codigo = Codigo ´; ParamByName(´Nome´).asString := edNome.Text; // Nome ParamByName(´Endereco´).asString := edEnd.Text; // Endereço ParamByName(´Bairro´).asString := edBairro.Text; // Bairro ParamByName(´Cidade´).asString := edCidade.Text; // Cidade ParamByName(´CartProfissional´).asString := edCarteiraProf.Text; // CartProfissional ParamByName(´SeriedaCart´).asString := edSerie.Text; // SeriedaCart ParamByName(´Cpf´).asString := edCpf.Text; // Cpf ParamByName(´Profissao´).asString := edProfissao.Text; // Profissao ParamByName(´Cep´).asString := edCep.Text; // Cep ParamByName(´Cbo´).asString := edCbo.Text; // Cbo ParamByName(´scontrato´).asString := edscontrato.Text; // scontrato ParamByName(´Identidade´).asString := edIdentidade.Text; // Identidade ParamByName(´SSP´).asString := edSsp.Text; // SSP ParamByName(´sal_base´).asString := edSalario.Text; // sal_base ParamByName(´DataNasc´).asString := edDataNasc.Text; // DataNasc ParamByName(´DataAdm´).asString := edDataAdm.Text; // DataAdm ParamByName(´Codigo´).asInteger := [b]CodTabela[/b]; ExecSql;
CodTabela é uma variavel inteira que que recebe o valor do Campo ´Codigo´ assim que eu puxo da grid...
testei e nao deu... :cry:
Gostei + 0
14/04/2004
Emerson Nascimento
Sql.Text := ´Update tbFuncionarios ´+ ´ Set Nome = :Nome,´+ ´ Endereco = :Endereco,´+ ´ Bairro = :Bairro,´+ ´ Cidade = :Cidade,´+ ´ CartProfissional = :CartProfissional,´+ ´ SeriedaCart = :SeriedaCart,´+ ´ Cpf = :Cpf,´+ ´ Profissao = :Profissao,´+ ´ Cep = :Cep,´+ ´ Cbo = :Cbo,´+ ´ scontrato = :scontrato,´+ ´ identidade = :identidade,´+ ´ ssp = :ssp,´+ ´ sal_base = :sal_base,´+ ´ DataNasc = :DataNasc,´+ ´ DataAdm = :DataAdm ´+ ´ Where Codigo = :Codigo´; ParamByName(´Nome´).asString := edNome.Text; // Nome ParamByName(´Endereco´).asString := edEnd.Text; // Endereço ParamByName(´Bairro´).asString := edBairro.Text; // Bairro ParamByName(´Cidade´).asString := edCidade.Text; // Cidade ParamByName(´CartProfissional´).asString := edCarteiraProf.Text; // CartProfissional ParamByName(´SeriedaCart´).asString := edSerie.Text; // SeriedaCart ParamByName(´Cpf´).asString := edCpf.Text; // Cpf ParamByName(´Profissao´).asString := edProfissao.Text; // Profissao ParamByName(´Cep´).asString := edCep.Text; // Cep ParamByName(´Cbo´).asString := edCbo.Text; // Cbo ParamByName(´scontrato´).asString := edscontrato.Text; // scontrato ParamByName(´identidade´).asString := edIdentidade.Text; // Identidade ParamByName(´ssp´).asString := edSsp.Text; // SSP ParamByName(´sal_base´).asString := edSalario.Text; // sal_base ParamByName(´DataNasc´).asString := edDataNasc.Text; // DataNasc ParamByName(´DataAdm´).asString := edDataAdm.Text; // DataAdm ParamByName(´Codigo´).asInteger := CodTabela; ExecSql;
não deu certo pq vc criou um parâmetro de nome ´00´ e está utilizando om parâmetro de nome ´Nome´, que não existe. faça como está no código acima....
Gostei + 0
14/04/2004
Vinicius2k
Mas teoricamente, a rotina inicial do oTTo não teria que ter funcionado? [color=red:de22dd8885]* [/color:de22dd8885]Talvez até sem entender exatamente o que estava fazendo, mas ele pegou os paramentros pelos índices... a não ser que não possam ser utilizados apenas números nos nomes dos parãmetros... :roll:
Se não houver esta restrição quanto ao número o [color=red:de22dd8885]*[/color:de22dd8885]problema é apenas na cláusula where em que não foi especificado que ´Codigo´ é um parametro (de índice 16) e não foi lhe dado um valor antes do ExecSQL...
T+
Gostei + 0
14/04/2004
Emerson Nascimento
Gostei + 0
14/04/2004
Vinicius2k
Obrigado Emerson. :wink:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)