jaumDoDelphi Postado Junho 6, 2011 Denunciar Share Postado Junho 6, 2011 Olá galera beleza!Primeiramente gostaria de pedir desculpas porque a duvida e curta, mas resolvi postar o problema bem detalhada!Estou com problemas para salvar um item Editado/Alterado.Segue os componentes, OS e etc...W7PRO 64bits notebook HP-DV6500Delphi 2010 + FireBird 2.5.0 (64x)Componente de conexão aba "InterBase"TIBDatabase, TIBTransaction, TIBQuery, TIBUpdateSQL.O banco é simples, como estou utilizando para aprendizado tenho apenas 3 campos COD/NOME/TELConsigo linkar na minha maquina "servidor do db" e em outras maquinas clientes com o FireBird Instalado.as funções Incluir, Excluir esta tudo ok. a imagem a baixo esta as configurações básicas.IMAGE SHACKSacompanhei o video deste camarada no youtubehttp://www.youtube.com/watch?v=q9vnuhYV9HsCom a video aula dele funcionou bem, mas no video ele n edita as entradas. apenas inclui e deleta.abaixo o codigo do form{$R *.dfm} procedure TfCLI.btnCANCELClick(Sender: TObject); begin DM.IBQuery1.Cancel; DBGrid1.SetFocus; end; procedure TfCLI.btnDELClick(Sender: TObject); begin DM.IBQuery1.Delete; end; procedure TfCLI.btnEDITClick(Sender: TObject); begin DM.IBQuery1.Edit; DBEdit2.SetFocus; end; procedure TfCLI.btnNEWClick(Sender: TObject); //NEW begin DM.IBQuery1.Append; DBEdit2.SetFocus; btnSAVE.Default := true; end; procedure TfCLI.btnSAVEClick(Sender: TObject); begin DM.IBQuery1.Post; //DM.IBQuery1.Close; //DM.IBQuery1.Open; DBGrid1.SetFocus; btnSAVE.Default := false; end; procedure TfCLI.FormClose(Sender: TObject; var Action: TCloseAction); begin DM.IBQuery1.Active := false; DM.IBDataBase1.Connected := false; DM.IBTransaction1.Active := false; Action := caFree; end; procedure TfCLI.FormShow(Sender: TObject); begin DM.IBDataBase1.Connected := true; DM.IBTransaction1.Active := true; DM.IBQuery1.Active := true; end; O Problema acho que esta no componente TIBUpdateSQL. // Propriedade delete delete from "CLIENT" where "CLIENT"."COD" = :"OLD_COD" and "CLIENT"."NOME" = :"OLD_NOME" and "CLIENT"."TEL" = :"OLD_TEL" // Propriedade Insert insert into "CLIENT" ("CLIENT"."COD", "CLIENT"."NOME", "CLIENT"."TEL") values (:"COD", :"NOME", :"TEL") // Propriedade Modify update "CLIENT" set "CLIENT"."COD" = :"COD", "CLIENT"."NOME" = :"NOME", "CLIENT"."TEL" = :"TEL" where "CLIENT"."COD" = :"OLD_COD" and "CLIENT"."NOME" = :"OLD_NOME" and "CLIENT"."TEL" = :"OLD_TEL"abaixo todo o codigo e o banco! "se alguém tiver tempo peço que porfavor analize"EASY SHAREEntão voltando ao form quando Aperto para editar OK, você edita os campos e quando mando salvarele me retorna a seguinte mensagem "Update Failed."já cansei de procurar no google, e no próprio forum vi que quase ninguém aqui utiliza o InterBase. :( Um grande abraço a todos e agradeço desde já! :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 6, 2011 Denunciar Share Postado Junho 6, 2011 Column does not belong to referenced table. Dynamic SQL Error. SQL error code = -206. Column unknown. TABELA1.STATUS. Firebird 1.5 IF (TABELA1.STATUS <> 'C') THEN BEGIN UPDATE TABELA2 SET TABELA2.CAMPO2 = 'S' WHERE TABELA2.CAMPO1 = TABELA1.CAMPO1; END FireBird 2.5 IF (NEW.STATUS <> 'C') THEN BEGIN UPDATE TABELA2 SET TABELA2.CAMPO2 = 'S' WHERE TABELA2.CAMPO1 = NEW.CAMPO1; END Na versão 2.5 tem que utlizar NEW(no caso do insert ou update) ou OLD ( no caso do delete)abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jaumDoDelphi Postado Junho 7, 2011 Autor Denunciar Share Postado Junho 7, 2011 Boa dia Jhonas, obrigado pela ajuda.Mas desculpe minha ignorância onde eu coloco este codigo?seria na propriedade ModifySQL do componente TIBUpdateSQL??? ;) ou no botão GRAVAR? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 7, 2011 Denunciar Share Postado Junho 7, 2011 seria na propriedade ModifySQL do componente TIBUpdateSQL???se voce estiver usando o TIBUpdateSQL... simduvidas ... leia ( as diferenças são minimas do FB 1.0 para o FB 2.5 ) seria mais para voce entender os comandoshttp://www.comunidade-firebird.org/cflp/do...s/CFLP_O012.PDFabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jaumDoDelphi Postado Junho 8, 2011 Autor Denunciar Share Postado Junho 8, 2011 (editado) novamente obrigado Jhonas! :) Li a apostila ontem a noite do FB 1.0, ela ajuda muito a entender como funciona este DB e suas propriedades e tipos de campo e comando.Hj de manha alterei o componente TIBUpdateSQL1 = Propriedade ModifySQL de:update "CLIENT" set "CLIENT"."COD" = :"COD", "CLIENT"."NOME" = :"NOME", "CLIENT"."TEL" = :"TEL" where "CLIENT"."COD" = :"OLD_COD" and "CLIENT"."NOME" = :"OLD_NOME" and "CLIENT"."TEL" = :"OLD_TEL" para: if (new.status <> 'C') then begin update "CLIENT" set "CLIENT"."NOME" = :"NOME" "CLIENT"."TEL" = :"TEL" where "CLIENT"."NOME" = :"NEW_NOME" and "CLIENT"."TEL" = :"NEW_TEL" e agora esta me voltando outro erro: Dynamic SQL Error SQL Error code = -104 Token unknown -line 1, colum 1 if. Como resolver este problema??? agradeço desde já! =================== EDITADO 11:40H Opa galera olha só notei uma coisa. quando eu edito um item p/ exemplo: COD -- NOME -- TEL 1 -- jose -- 4545-7700 2 -- maria -- 3 -- remp -- 3333-8888quando eu edito o cadastro 1 = JOSE, eu edito na boa não ocorre o erro, mas quando eu edito a maria que no campo tel esta vazioda o erro do Update Faileda tabela foi criada no IBExpert Trial ver. 2004.12COD - INTEGER (PK) - com trigger de autoinc - NOTNULLNOME - VARCHAR - 15TEL - VARCHAR - 15se alguém tiver uma soloção, eu agradeço! :D Editado Junho 8, 2011 por jaumDoDelphi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 10, 2011 Denunciar Share Postado Junho 10, 2011 if (new.status <> 'C') then begin update "CLIENT" set "CLIENT"."NOME" = :"NOME" "CLIENT"."TEL" = :"TEL" where "CLIENT"."NOME" = :"NEW_NOME" and "CLIENT"."TEL" = :"NEW_TEL"Dynamic SQL ErrorSQL Error code = -104Token unknown -line 1, colum 1 if.esse erro esta indicando que o IF não pode ser usado dentro da Propriedade ModifySQL ... nesse caso a abordagem para o problema é usar a propriedade SQL de uma query.leia com mais atenção a apostila ... Obs: existem outras na net ou no proprio forumabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jaumDoDelphi
Olá galera beleza!
Primeiramente gostaria de pedir desculpas porque a duvida e curta, mas resolvi postar o problema bem detalhada!
Estou com problemas para salvar um item Editado/Alterado.
Segue os componentes, OS e etc...
W7PRO 64bits notebook HP-DV6500
Delphi 2010 + FireBird 2.5.0 (64x)
Componente de conexão aba "InterBase"
TIBDatabase, TIBTransaction, TIBQuery, TIBUpdateSQL.
O banco é simples, como estou utilizando para aprendizado tenho apenas 3 campos COD/NOME/TEL
Consigo linkar na minha maquina "servidor do db" e em outras maquinas clientes com o FireBird Instalado.
as funções Incluir, Excluir esta tudo ok. a imagem a baixo esta as configurações básicas.
IMAGE SHACKS
acompanhei o video deste camarada no youtube
http://www.youtube.com/watch?v=q9vnuhYV9Hs
Com a video aula dele funcionou bem, mas no video ele n edita as entradas. apenas inclui e deleta.
abaixo o codigo do form
O Problema acho que esta no componente TIBUpdateSQL.abaixo todo o codigo e o banco! "se alguém tiver tempo peço que porfavor analize"
EASY SHARE
Então voltando ao form quando Aperto para editar OK, você edita os campos e quando mando salvar
ele me retorna a seguinte mensagem "Update Failed."
já cansei de procurar no google, e no próprio forum vi que quase ninguém aqui utiliza o InterBase. :(
Um grande abraço a todos e agradeço desde já! :D
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.