Ir para conteúdo
Fórum Script Brasil
  • 0

InterBase + FireBird = Problemas


jaumDoDelphi

Pergunta

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

{$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 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

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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-8888

quando 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 vazio

da o erro do Update Failed

a tabela foi criada no IBExpert Trial ver. 2004.12

COD - INTEGER (PK) - com trigger de autoinc - NOTNULL

NOME - VARCHAR - 15

TEL - VARCHAR - 15

se alguém tiver uma soloção, eu agradeço! :D

Editado por jaumDoDelphi
Link para o comentário
Compartilhar em outros sites

  • 0

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 Error

SQL Error code = -104

Token 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 forum

abraço

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...