Fórum Duvida #7180

29/06/2009

0

Estou com uma duvida que é o seguinte eu tenho um cadastro de clientes e estou utilizando um clientdataset filtrado mais eu quero inserir um registro nessa tabela e quando o eu digitar um codigo e um nome que ja tem cadastrado eu quero trazer os dados desse cliente tipo tentei usar um clientdataset com a seguinte instrucao coloquei em um botao para fazer o teste. close; select * from clientes where codigo = '+edtCODIGO.TEXT+' and '+edtNOME.text+' open; coloquei para passar os parametros e no provider eu colquei poAllowcommandText da certo localiza mais eu acho q ta dando pau pq eu to mudando a instrução padrao na hora de inserir, tem alguma maneira mais eficaz de se fazer isso?  
Paulo Silva

Paulo Silva

Responder

Posts

29/06/2009

Wesley Yamazack

Olá Paulo,
  Seguinte. Cria uma uma function onde ela peça o nome do cliente, como parametro. dai você faz um select com o nome do cliente, ou o código. e testa, se ele achar você da uma msg dizendo que o cliente já ta cadastrado. e faz o que você quer fazer com o clientdataset.

 Se nao te ajudar, me explica melhor a tua duvida

Att,
Wesley Y

Responder

Gostei + 0

01/07/2009

Devmedia

Paulo,
a resposta do consultor respondeu sua dúvida? Podemos encerrar o chamado?
Responder

Gostei + 0

02/07/2009

Paulo Silva

Tipo wesley o meu problema eu consegui resolver o negocio era nubice minha mesmo tipo aproveitando q o chamado ainda ta aberto tenho duas duvidas eu fiz um contador de linhas com o seguinte codigo no evento after insert   cdsitendetalheNUMEROITEN.AsInteger :=
cdsitendetalhe.RecordCount+1;   funciona bem so que quando deleto um registro por exemplo o numero 3 fika uma falha tipo 1 2 3 4 deleto o 3 fika 1 2 4 tipo queria q ele auto numerasse tem alguma forma melhor de se fazer isso pq eu nao tenho a minima ideia
Responder

Gostei + 0

02/07/2009

Wesley Yamazack

Olá Paulo,
   O que você quer fazer é o seguinte, só para ver se eu entendi, deixar que o CDS incrementar o ID sozinho, seria isso? Se for é tranquilo, o teu banco de dados que tem que gerar automaticamente o código,para isso você não precisa nem fazer este código no teu CDS, no teu banco de dados você cria uma chave primaria autoincremento, ou uma sequence dependendo do teu banco de dados, para fazer isso.
  Agora se você quiser gerar o código exemplo.
1
2
3 /Deletar este código
4

   Ao incluir o outro código pegar o Numero 3 novamente, o que você quer ? Qual das duas situações ?

   Fico no aguardo


Att,

Wesley Y
Responder

Gostei + 0

02/07/2009

Paulo Silva

eu quero gerar o codigo no proprio delphi o.O
Responder

Gostei + 0

02/07/2009

Wesley Yamazack

Olá Paulo,
   Voce quer gera o código pelo, delphi, mas da forma que você esta fazendo esta legal, mas o que ta acontecendo ?
   Você poderia botar no onnewRecord este código tbm.
   Me explique melhor, sua duvida.

Att,

Wesley Y
Responder

Gostei + 0

03/07/2009

Paulo Silva

Estou usando um relacionamento master detail onde esse cdsitendetalhe sao os detalhes ou seja estao em um dbgrid q nao faz acesso direto no banco pois eu tenho um clientdataset com os detalhes um sendo mestre e um outro sendo os detalhes dos itens ou seja nao faz vinculo direto com  o banco eu preciso saber quantos itens tem para cada nota saca, se eu usar o on new record entao ele vai dar certim e hora q o caboco apagar um iten? da nota no form entao o numero do iten vai fikar do jeito que eu postei 1 2 3 4 5 eu deleto o 4 fika  (no caso abaixo deletei o 1 e 2) 1 2 3 5      
Responder

Gostei + 0

03/07/2009

Wesley Yamazack

Olá Paulo,
  Vamos lá, me corriga se eu estiver errado, você esta preocupado com a chave que será gerada no banco?
  Segundo, você quer saber quantos itens tem no seu clientdataset, certo ? Se for isso das duas uma, ou você usa um campo agregado, ou usa um cdsdetalhe.recordcount, ele te retorna um inteiro, dai você loja em um label ou edit seja la como quiser, fazendo a conversão é claro. Edit1.text := IntToStr(CdsDelhe.RecordCount);
   Seria isso ?

Att,

Wesley Y
Responder

Gostei + 0

03/07/2009

Paulo Silva

preciso salvar tb o numero do iten tenho um campo na tabela chamado de numero_iten pq a cada novo lançamento master eu reinicio o numero do iten tipo lançamento um tem 3 itens 1 2 3 quando eu inicio dnovo entao o lançamento dos itens começa do 1 novamente eu postei a imagem ae c eu colocar o numero do iten como chave entao ele vai me retornar o ultimo iten +1 tipo fiz um lançamento com 3 itens quando eu iniciar um novo entao do 4 pq nao pode ter itens repetidos la na tabela entende qual o meu problema do jeito que eu fiz funciona perfeitamente so que quando eu excluo o iten fika uma falha tipo 1 2 3 4 5 exclui o 1 e o 2 fikou 3 4 5 eu queria q fikasse 1 2 3 so isso eu postei a imagem logo abaixo da uma analisada o campo chave da tabela de itens é ItenId nao tenho problema quanto a chave nao!  
Responder

Gostei + 0

06/07/2009

Wesley Yamazack

Olá Paulo,
  Olha o que você quer fazer é organizar os itens, certo ?

 1
 2
 3
 4
 5

  Se você excluir o que esta em vermelho, você quer que ele reordene os dados para
 1
 2
 3

 Certo? Mas pra qual motivo?
 O que você pode fazer é.
 1 - Criar uma variável Local chamada de I : Integer;
       I := 0;
 2 - Colocar teu CDS na primeira posição;
 3 - Fazer um
      While not CDS.EOF do
      begin
          INC(I);
          CDS.EDIT;
          CDS.FIELDBYNAME('numero_iten').ASiNTEGER := I;
          CDS.POST;
      end;

 Com isso você consegue fazer um Update no teu CDS, em memória mesmo, e trocar os valores.
Att.

Wesley Y



Responder

Gostei + 0

07/07/2009

Wesley Yamazack

Olá Paulo,
  Tudo bem ?
  Consegui fazer o exemplo ?  Estou no seu aguardo, para fecharmos o chamado.

Att,

Wesley Y

 
Responder

Gostei + 0

08/07/2009

Paulo Silva

Sim, consegui sim pode fechar o chamado brigadao =]
Responder

Gostei + 0

08/07/2009

Wesley Yamazack

Olá meu amigo, sempre que precisar estamos aqui!

Att,

Wesley Y
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar