Fórum Gravar registros em banco de dados Firebird com DbExpress #40702
08/12/2003
0
Estou tentando gravar registros em um banco de dados usando componentes do DBExpress, mas os registros não estão sendo gravados no banco.
Utilizo ClientDataSet.Post e ClientDataSet.applyUpdates(0) para gravar. Quando fecho e abro novamente o registro não está lá !!!
Alguém tem alguma idéia ?
Obrigado !
Adriano Nunes
Curtir tópico
+ 0Posts
08/12/2003
Afarias
2 - Certifíque-se de configurar corretamente as propriedades ProviderFlags dos TFields do seu dataset (não o clientDataSet) e a propriedade UpdateMode do DataSetProvider.
3 - Use algum SQLMonitor para verificar se os SQL gerados pelo Provider estão corretos.
T+
Gostei + 0
09/12/2003
Adriano Nunes
Caso eu queira desistir do DbExpress, o que você recomenda ? que não sejam componentes de 3º, componentes que estejam no Delphi 7 !!
O IBQuery da palheta Interbase seria uma boa opção ?
Neste caso as inclusões e alterações tem que ser feitas via comando de SQL ? como insert e update ?
O que você recomenda ?
Gostei + 0
09/12/2003
Duarteol
procedure TForm_Deputados_I.BitBtn1Click(Sender: TObject);
var
Trs : Ttransactiondesc;
begin
If MessageDlg(´Confirma, Inclusão dos Dados?´,
mtConfirmation,[mbYes , mbNo],0)=mrYes then
begin
//define a transação chamada Trs
Trs.TransactionID:=1;
Trs.IsolationLevel:=xilReadCommitted;
dmdados.Con_Parlamento.StartTransaction(Trs);
try
//
if not (dmdados.ClientDeputados.State=dsEdit) then
begin
dmdados.ClientDeputadosCOD_DEPUT.Value:=0;
end;
dmdados.ClientDeputadosTITULAR.Value:=EditDescricao.Text;
dmdados.ClientDeputadosSUPLENTE.Value:=Editpartido.Text;
dmdados.ClientDeputadosSIGLA.Value:=Editsigla.Text;
//
dmdados.ClientDeputados.ApplyUpdates(-1);
dmdados.Con_Parlamento.Commit(Trs);
except
dmdados.Con_Parlamento.Rollback(Trs);
ShowMessage(´Não Foi Possível Realizar a Gravação Com Sucesso ´);
end;
dmdados.ClientDeputados.Active:=False;
dmdados.ClientDeputados.Active:=True;
dmdados.ClientDeputados.Insert;
EditDescricao.Text:=´´;
Editpartido.Text:=´´;
Editsigla.Text:=´´;
end
else
begin
dmdados.ClientDeputados.Cancel;
EditDescricao.Text:=´´;
Editpartido.Text:=´´;
Editsigla.Text:=´´;
end;
dmdados.ClientDeputados.ApplyUpdates(-1);
ModalResult := -1;
end;
:roll: Não sei se vai ajudar, mas...
Gostei + 0
09/12/2003
Afarias
|na tabela do banco, mas criei um novo form na aplicação que eu já {...}
Algum detalhe q vc está deixando de lado.
|Caso eu queira desistir do DbExpress, o que você recomenda ? que não
|sejam componentes de 3º, componentes que estejam no Delphi 7 !!
IBX é muito fácil e simples
|O IBQuery da palheta Interbase seria uma boa opção ?
ou IBDataSet para as consultas ´editáveis´
|Neste caso as inclusões e alterações tem que ser feitas via comando de
|SQL ? como insert e update ?
Não (pelo menos explicitamente) -- vc usa Append,Edit,Post,Delete -- os componente mandam os comandos SQL para vc.
T+
Gostei + 0
10/12/2003
Adriano Nunes
A instrução que eu utilizo é:
insert into clientes (codigo,nome) values (:xcodigo,:xnome)
No caso o conteúdo de xcodigo é ´000035´ e xnome ´Adriano´
quando tento inserir o registro ele diz que:
field ´000035´ not found
o conteúdo do botão de gravar é o seguinte:
var
xcodigo,xnome: string;
begin
ibdataset1.Append;
xcodigo:=edit1.Text;
xnome:=edit2.text;
Ibdataset1.ParamByName(xcodigo);
Ibdataset1.ParamByName(xnome);
ibdataset1.Post;
end;
O que estou fazendo de errado ???
Gostei + 0
10/12/2003
Afarias
InsertSQL = insert into clientes (codigo,nome) values (:codigo,:nome)
código::
var xcodigo, xnome: string; begin xcodigo := edit1.Text; xnome := edit2.text; Ibdataset1.Append; Ibdataset1.FieldByName(´codigo´).AsString := xcodigo; Ibdataset1.FieldByName(´nome´).AsString := xnome; Ibdataset1.Post; end;
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)