Fórum Dúvida com ClientDataSet #325953
24/07/2006
0
Num := TTable1.FieldByName(´Cod_Cli´).AsString;
.
.
TTable1.Append;
TTable1.FieldByName(´Cod_Cli´).AsString := IntToStr(StrToInt(Num) + 1);
Só q com ClienteDataSet isso naum funciona, tem algum exemplo de como posso fazer isso?
Fabiano_aprendiz
Curtir tópico
+ 0Posts
24/07/2006
Marco Salles
Pelo visto acho que voce ainda não consegui.
Acho porem , mais indicado voce ainda tentar fazer com que o Banco gere isto para voce , do que ficar fazendo Na mão .. Em aplicaçoes Local , não havera problema nenhum , porem o mesmo não se pode falar de aplicaçoes client-Servidor
Mas voltando ao assunto , o que voce quer tem muitas maneiras . Geralmente se faz uma consulta ao Banco . Eu particularmente acho desnecessário , visto que o ClientDataSet tem a opção de [b:7010fc4107]campo Agregados.[/b:7010fc4107]
Criar um campo Agregado e fãicl e rápido
Para pegar o valor , faça
Código: Var MaxCodigo;Integer; Begin MaxCodigo:=ClientDataset1NomeDoNovoCampo.AsInteger+1;
e na hora de salvar use o Valor Do MaxCodigo
ClientDataset1Cod_Client.asinteger:=Max_Codigo;
[b:7010fc4107]Bem a unica dúvida minha , é se sera preciso antes da instrução
MaxCodigo:=ClientDataset1NomeDoNovoCampo.AsInteger+1; Fechar e abrir o ClientDataSet .[/b:7010fc4107]
Gostei + 0
24/07/2006
Fabiano_aprendiz
Segui todas as suas orientações, mas estou recebendo um erro na linha :
MaxCodigo:=DmCadCliente.cdsClienteCod.AsInteger + 1;
O erro é: Cannot access field ´Cod´ as type Integer.
O q pode está errado?
Gostei + 0
24/07/2006
Fabiano_aprendiz
Gostei + 0
24/07/2006
Martins
O Campo cod existe em sua tabela, ele é do tipo integer?
caso existe, faça o seguinte clique com o botão direito no cds e depois fields editor (acho q é isso), inclua todos os campos e depois tente novamente.
MaxCodigo:=DmCadCliente.cdsCliente.FieldByName(´Cod´).AsInteger + 1;
boa sorte!!!
Gostei + 0
24/07/2006
Fabiano_aprendiz
É um campo que foi criado, seguindo passo a passo todas as orientações do Marco.
Gostei + 0
24/07/2006
Marco Salles
Fabiano_Aprendiz , aqui eu apenas copiei algo que ja tinha respondido em outro tópico e coloquei aqui..
vamos recapitular
Para pegar o valor , faça
[b]NomeDoNovoCampo que voce criou ao dar o Duplo Click etc...[/b:6fea51a4e8]
Código:
Var MaxCodigo;Integer; Begin MaxCodigo:=ClientDataset1NomeDoNovoCampo.AsInteger+1;
e na hora de salvar
e na hora de salvar use o Valor Do MaxCodigo
Código:
ClientDataset1NomeDoSeuCampoAutoIncrementado.AsInteger:=MaxCodigo
Claro que voce so vai usar isto se NomeDoSeuCampoAutoIncrementado , estiver no Tfields. Caso contrário voce tera que usar[b:6fea51a4e8] FieldByName[/b:6fea51a4e8]
ClientDataset1.FieldByName(´NomeDoSeuCampoAutoIncrementado´).AsInteger:=MaxCodigo[/code]
Depois de tudo dando certo faça este teste...
E por fim , não se assuste e muito fácil e prático...
Gostei + 0
24/07/2006
Fabiano_aprendiz
Fiz e refiz tudo o q vc indicou, mas continua ocorrendo o mesmo erro na linha:
MaxCodigo:= DmCadCliente.cdsClienteCod.AsInteger + 1;
O erro é : Cannot access field ´Cod´ as type Integer.
Gostei + 0
24/07/2006
Marco Salles
é porque ainda não chegou a hora .
qual o nome do seu campo Original ???
Ele é do tipo Inteiro ???
Qual o nome que voce esta dando para o campo Agregado ???
No Tfirld do campo Agregado voce ativou Active = True ???
O resto amigo é muito fácil... Faço isto toda hora de olhos fechados . e voce tb o fará de olhos fechados , pode ter certeza disso.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)