Probelmas na Gravação com IBX
Ola pessoal , eu sou novo no forum e estou com um probleminha na minha aplicação.
Bom e o seguinte,Criei um sistema de video locadora multi-usuario, comtodos as
caracteristicas nescessarias,ate ai tudo bem ,
Quando inicio uma nova locação ,e criado o numero da locação , os dados do cliente
, e todos os filmes que ele locou,Blz.
Porem quando eu termino a locação , onde vou gravar os dados finais da Locação
( Cod_Cliente, Total_Locacao, Pago, a_Pagar) o programa simplesmente não grava
no Banco de Dados.
= Uso Delphi 6 e Interbase Open Source V6.2
Erro = SqlDataSetPedido. Param (Pagar) not Found.
Ai vai o codigo:
Ao clicar no botão Finalizar Locacao.
// desfaz a relação mestre/detalhe
DmLoc.ClientDatasSetPedido.active:=False;
DmLoc.ClientDataSetItens.active:=False;
// fecha para criar nova query
DmLoc.SqlDataSetpedido.close;
DmLoc.SqlDataSetPedido.CommandText:=
´UPDATE Pedido_Loc ´+
´SET Cod_Cliente=:Cod_Cli,Total_Locacao=:Total,´+
´Pago=:Pg,A_Pagar=:Pagar´+
´ WHERE Cod_Loc=:Codigo´;
// Passa valores para a query através dos parametros
DmLoc.SqlDataSetPedido.Parambyname(´Cod_Cliente´).asstring :=EdtCod_Cliente.Text;
DmLoc.SqlDataSetPedido.Parambyname(´Total´).asfloat :=Soma_Total_Locacao;
DmLoc.SqlDataSetPedido.Parambyname(´Pg´).asstring :=MaskValor_Pago.text;
DmLoc.SqlDataSetPedido.Parambyname(´Pagar´).asfloat :=MaskValor_A_Pagar.text;
DmLoc.SqlDataSetPedido.Parambyname(´codigo´).asinteger :=G_numero_da_nova_Venda;
// Executa a query
DmLoc.SQLDataSetPedido.ExecSQL;
end
Ja tentei colocaar componentes Data Aware mas não grava de jeito nenhum ,
tambem troquei o banco mas não tem jeito.
Bom e o seguinte,Criei um sistema de video locadora multi-usuario, comtodos as
caracteristicas nescessarias,ate ai tudo bem ,
Quando inicio uma nova locação ,e criado o numero da locação , os dados do cliente
, e todos os filmes que ele locou,Blz.
Porem quando eu termino a locação , onde vou gravar os dados finais da Locação
( Cod_Cliente, Total_Locacao, Pago, a_Pagar) o programa simplesmente não grava
no Banco de Dados.
= Uso Delphi 6 e Interbase Open Source V6.2
Erro = SqlDataSetPedido. Param (Pagar) not Found.
Ai vai o codigo:
Ao clicar no botão Finalizar Locacao.
// desfaz a relação mestre/detalhe
DmLoc.ClientDatasSetPedido.active:=False;
DmLoc.ClientDataSetItens.active:=False;
// fecha para criar nova query
DmLoc.SqlDataSetpedido.close;
DmLoc.SqlDataSetPedido.CommandText:=
´UPDATE Pedido_Loc ´+
´SET Cod_Cliente=:Cod_Cli,Total_Locacao=:Total,´+
´Pago=:Pg,A_Pagar=:Pagar´+
´ WHERE Cod_Loc=:Codigo´;
// Passa valores para a query através dos parametros
DmLoc.SqlDataSetPedido.Parambyname(´Cod_Cliente´).asstring :=EdtCod_Cliente.Text;
DmLoc.SqlDataSetPedido.Parambyname(´Total´).asfloat :=Soma_Total_Locacao;
DmLoc.SqlDataSetPedido.Parambyname(´Pg´).asstring :=MaskValor_Pago.text;
DmLoc.SqlDataSetPedido.Parambyname(´Pagar´).asfloat :=MaskValor_A_Pagar.text;
DmLoc.SqlDataSetPedido.Parambyname(´codigo´).asinteger :=G_numero_da_nova_Venda;
// Executa a query
DmLoc.SQLDataSetPedido.ExecSQL;
end
Ja tentei colocaar componentes Data Aware mas não grava de jeito nenhum ,
tambem troquei o banco mas não tem jeito.
Alexrol
Curtidas 0
Respostas
Afarias
08/09/2003
Interessante, enquanto o erro diz q o parametro PAGAR nao foi encontrado, pelo codigo q vc postou eu diria q o parametro ´Cod_Cliente´ e´ que nao existe! O nome correto e´ :: ´cod_cli´.
Para usar controles DataWare com DBX vc precisa associar ao SQLDataSet um DataSetProvider e um ClientDataSet e usar o ClientDataSet para trabalhar com os dados.
T+
Para usar controles DataWare com DBX vc precisa associar ao SQLDataSet um DataSetProvider e um ClientDataSet e usar o ClientDataSet para trabalhar com os dados.
T+
GOSTEI 0
Alexrol
08/09/2003
DEsculpe amigo , Cod_Cliente foi apenas um erro de digitação aqui no postulado,o certo e Cod_Cli.
Qauanto os componentes eu Uso:
SqlConnection
SqlDataSet
DataSetProvider
ClientDatSet
DataSource
Uso estes componentes pois preciso de acesso bidirecional ao banco de dados , sem eles não seria possivel este tipo de acesso.
E mesmo assim ele retorna esse erro na hora de gravar os registros mestre.
Qauanto os componentes eu Uso:
SqlConnection
SqlDataSet
DataSetProvider
ClientDatSet
DataSource
Uso estes componentes pois preciso de acesso bidirecional ao banco de dados , sem eles não seria possivel este tipo de acesso.
E mesmo assim ele retorna esse erro na hora de gravar os registros mestre.
GOSTEI 0
Afarias
08/09/2003
Se vc usa ClientDataSet, entao seu procedimento de atualizacao me parece equivocado!
Vc nao deve alterar o SQL do SQLDataSet que esta associado ao provider. Atualize os campos no ClientDataSet (Edit, ..., Post) e depois de um ApplyUpdates.
Se vc souber configurar corretamente o Provider e os ProviderFlags dos TFields criados no SQLDataSet, o provider cuida de gerar todos os UPDATES, INSERTS e DELETES automaticamente para vc.
Se ainda assim, preferir da forma como esta fazendo, use um segundo SQLDataSet (ou SQLQuery se e q existe) com seu UPDATE.
T+
Vc nao deve alterar o SQL do SQLDataSet que esta associado ao provider. Atualize os campos no ClientDataSet (Edit, ..., Post) e depois de um ApplyUpdates.
Se vc souber configurar corretamente o Provider e os ProviderFlags dos TFields criados no SQLDataSet, o provider cuida de gerar todos os UPDATES, INSERTS e DELETES automaticamente para vc.
Se ainda assim, preferir da forma como esta fazendo, use um segundo SQLDataSet (ou SQLQuery se e q existe) com seu UPDATE.
T+
GOSTEI 0