Duvida
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
Curtidas 0
Respostas
Wesley Yamazack
29/06/2009
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
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
GOSTEI 0
Devmedia
29/06/2009
Paulo,
a resposta do consultor respondeu sua dúvida? Podemos encerrar o chamado?
a resposta do consultor respondeu sua dúvida? Podemos encerrar o chamado?
GOSTEI 0
Paulo Silva
29/06/2009
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
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
GOSTEI 0
Wesley Yamazack
29/06/2009
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
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
GOSTEI 0
Paulo Silva
29/06/2009
eu quero gerar o codigo no proprio delphi o.O
GOSTEI 0
Wesley Yamazack
29/06/2009
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
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
GOSTEI 0
Paulo Silva
29/06/2009
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
GOSTEI 0
Wesley Yamazack
29/06/2009
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
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
GOSTEI 0
Paulo Silva
29/06/2009
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!
GOSTEI 0
Wesley Yamazack
29/06/2009
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
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
GOSTEI 0
Wesley Yamazack
29/06/2009
Olá Paulo,
Tudo bem ?
Consegui fazer o exemplo ? Estou no seu aguardo, para fecharmos o chamado.
Att,
Wesley Y
Tudo bem ?
Consegui fazer o exemplo ? Estou no seu aguardo, para fecharmos o chamado.
Att,
Wesley Y
GOSTEI 0
Paulo Silva
29/06/2009
Sim, consegui sim pode fechar o chamado brigadao =]
GOSTEI 0
Wesley Yamazack
29/06/2009
Olá meu amigo, sempre que precisar estamos aqui!
Att,
Wesley Y
Att,
Wesley Y
GOSTEI 0