Fórum erro com dbexpress #210223
28/01/2004
0
Dando continuidade ao meu estudo, estou desenvolvendo uma simples aplicação de cadastro de clientes. Estou usando sqlserver como banco, e a paleta dbexpress, para inserir estou usando um botão com o código: ´datasource.dataset.append´ e assim por diante. A tabela clientes foi criada com a propriedade IDENTY do campo id_cliente setada para YES, isto faz o campo se comportar como autoincremento. Quando vou inserir algum registro na aplicação eu preencho apenas os campos ´razao social´ e ´nomefantasia´, pois o campo ´id_cliente´ eu deixei desativado. Ao salvar o delphi me retorna um erro ´id_cliente must have a value´, ou seja ele é um campu chave-primária e não pode conter valores nulos, mas porque o incremento não funcionou automaticamente ao salvar o registro? Eu já usei os componentes ADO e funcionaram corretamente, mas como pretendo ser programador eu preciso entender porque não funcionou com dbexpress.
Aguardo um retorno de vcs.
Programalista
Curtir tópico
+ 0Posts
28/01/2004
Maicongabriel
Gostei + 0
29/01/2004
Programalista
Agora, como é que eu crio no sqlserver uma stored procedure que incremente o id_cliente da tabela clientes? Como seria o codigo desta stored procedure, por que ai então eu exibiria o codigo através de um DBtext.
Lourival Oliveira
Sete Lagoas - MG
Gostei + 0
29/01/2004
Rik3500
Eu em seu lugar faria o seguinte.
Independente de usar o ADO ou DBExpress, eu criaria o autoincremento no codigo do programa e não o SqlServer, assim:
1- Crie uma Query, e instrua o seguinte código SQL: ´Select MAX(Codigo) from Tabela´, abra a query e adicione o campo gerado;
2- No dataSet em que voce irá tabalhar, ex: DataSetClientes. Crie o evento AfterInsert a instrução:
Query.Close ou Active := False;
Query.Open ou Acteive := True;
DataSetClientesCodigo.Value := (QueryMAX.Value + 1);
Assim voce verá que ira funcionar beleza.
Falou!
Abraço.
Gostei + 0
29/01/2004
Programalista
Vc é ferademais, funcionou a sugestão, veja abaixo o codigo que implementei. Muito Obrigado, valeu mesmo.
[color=blue:94bad22d7b]dados.SQLQuery1.Active:= False;
dados.SQLQuery1.Active:= True;
dados.ClientDataSet1id_cliente.Value:= dados.SQLQuery1column1.Value + 1;[/color:94bad22d7b]
Olhe que é uma idéia bastante original, parabéns!!!
Gostei + 0
29/01/2004
Oziasl
Adicione o campos pela query, dando duplo clique e aponte para campo autoincremento e na propriedade required passe para false. Faça o mesmo para clientdataset. Os componentes dbexpress são bons, mas precisam ser bem configurados :P . Tudo de bom - Ozias
Gostei + 0
30/01/2004
Programalista
Gostei + 0
30/01/2004
Rik3500
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)