Gravando em branco no Banco de dados
Pessoal estou com um probleminha aqui.
Estou usando SQLServer e os componentes ADO.
Usando uma ADOQuery para inserir dados.
O problema:
- quando uso um DBEdit não dá erro nenhum, porem quando consulta o banco está em branco.
- usando a mesma instrução mas com um Edit não dá erro na gravação e aparece tudo quando se consulta o banco.
o que pode estar acontecendo
Exemplo do codigo:
Estou usando SQLServer e os componentes ADO.
Usando uma ADOQuery para inserir dados.
O problema:
- quando uso um DBEdit não dá erro nenhum, porem quando consulta o banco está em branco.
- usando a mesma instrução mas com um Edit não dá erro na gravação e aparece tudo quando se consulta o banco.
o que pode estar acontecendo
Exemplo do codigo:
with qrPadrao do begin close; sql.clear; sql.add('insert into CLIENTE (nome)'); sql.add('values (:nome)'); parameters.parambyname('nome').value := dbedit1.text; execSQL; end;
Renato Sanches
Curtidas 0
Melhor post
Raimundo Pereira
31/03/2016
with DM.qrPadrao do
begin
close;
sql.clear;
SQL.Add('insert into CLIENTE values(:NOME)');
Parameters.ParamByName('NOME').Value :=Edit1.Text;
TRY
execSQL;
ShowMessage('Insert realizado com sucesso');
EXCEPT
ShowMessage('Falha no Insert');
END;
end;
begin
close;
sql.clear;
SQL.Add('insert into CLIENTE values(:NOME)');
Parameters.ParamByName('NOME').Value :=Edit1.Text;
TRY
execSQL;
ShowMessage('Insert realizado com sucesso');
EXCEPT
ShowMessage('Falha no Insert');
END;
end;
GOSTEI 1
Mais Respostas
Raylan Zibel
31/03/2016
Tente:
Parameters.ParamByName('NOME').AsString := dbedit1.Field.AsString;
GOSTEI 0
Raylan Zibel
31/03/2016
with DM.qrPadrao do
begin
close;
sql.clear;
SQL.Add('insert into CLIENTE values(:NOME)');
Parameters.ParamByName('NOME').Value :=Edit1.Text;
TRY
execSQL;
ShowMessage('Insert realizado com sucesso');
EXCEPT
ShowMessage('Falha no Insert');
END;
end;
begin
close;
sql.clear;
SQL.Add('insert into CLIENTE values(:NOME)');
Parameters.ParamByName('NOME').Value :=Edit1.Text;
TRY
execSQL;
ShowMessage('Insert realizado com sucesso');
EXCEPT
ShowMessage('Falha no Insert');
END;
end;
Ou
TRY execSQL; ShowMessage('Insert realizado com sucesso'); EXCEPT on e: Exception do begin ShowMessage('Falha no Insert: ' + e.message); end; END;
GOSTEI 0
Renato Sanches
31/03/2016
Pessoal valeu pelas dicas mas o problema persiste não da erros ao gravar porém se usar dbedit grava mas em branco. Com edit funciona beleza.
GOSTEI 0
Raylan Zibel
31/03/2016
Tente:
Se tem valor no "dbedit1.text", tem que funcionar. Senão é alguma coisa no seu banco. Faltando PK ou alguma trigger.
with qrPadrao do begin close; sql.clear; sql.add('insert into CLIENTE (nome) '); sql.add(' values ('+ QuotedStr(dbedit1.text) +')');; execSQL; end;
Se tem valor no "dbedit1.text", tem que funcionar. Senão é alguma coisa no seu banco. Faltando PK ou alguma trigger.
GOSTEI 0
Renato Sanches
31/03/2016
Eu olhei no banco e está com pk. Se coloco o dbedit lingando ao data source se estou no delphi ele traz certinho o q está no banco, desde que não foi gravado por ele. Troquei o dbedit e nada. O duro que foi do nada q começou. Estou usando dbedit somente numa tela pois prefiro que esteja desconectado do banco. Nessa tela o objetivo era ao abrir o usuário ver alguns dados. Vou ter q contornar a situação usando outra forma.
GOSTEI 0
Raimundo Pereira
31/03/2016
Brother.
Geralmente, não uso o Dbedit, pois o mesmo deve está conectado ao banco de dados.
Nas rotinas de insert, edit e consulta eu uso um Tedit
Agora se você usar o dbedit, você localizar um determinado registro na tabela para que seja mostrado o valor correto.
Ou seja depois do insert você realiza o lacate.
DM.qrPadrao.locate('CAMPO_A_LOCALIZAR',EDIT1.TEXT,[]);// Vai buscar o registro e focar no mesmo
espero que ajude
Geralmente, não uso o Dbedit, pois o mesmo deve está conectado ao banco de dados.
Nas rotinas de insert, edit e consulta eu uso um Tedit
Agora se você usar o dbedit, você localizar um determinado registro na tabela para que seja mostrado o valor correto.
Ou seja depois do insert você realiza o lacate.
DM.qrPadrao.locate('CAMPO_A_LOCALIZAR',EDIT1.TEXT,[]);// Vai buscar o registro e focar no mesmo
espero que ajude
GOSTEI 0
Renato Sanches
31/03/2016
E mais ou menos isso. O cliente quer que quando abra o formulário esteja visível para ele. Um dbedit faria isso. Como deu essa zica o jeito vai ser o edit receber os valores da query assim que o formulário abrir.
GOSTEI 0