Probelmas na Gravação com IBX

Firebird

08/09/2003

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.


Alexrol

Alexrol

Curtidas 0

Respostas

Afarias

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+


GOSTEI 0
Alexrol

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.


GOSTEI 0
Afarias

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+


GOSTEI 0
POSTAR