Pesquisa tabela paradox
Ola
Tenho uma tabela paradox com o seguintes campos
Lacre Atesatado status
0101 0101 estoque
0102 0121 usado
0103 0122 retirado
Gostaria de saber assim que digitar o numero do lacre em um edit faça um busaca na tabela e me mostre uma messagem se ja esta em uso ou não se foi retirado usando as informações lacre atestado status.
Pode ser em SQL
Valeu
Dart
Tenho uma tabela paradox com o seguintes campos
Lacre Atesatado status
0101 0101 estoque
0102 0121 usado
0103 0122 retirado
Gostaria de saber assim que digitar o numero do lacre em um edit faça um busaca na tabela e me mostre uma messagem se ja esta em uso ou não se foi retirado usando as informações lacre atestado status.
Pode ser em SQL
Valeu
Dart
Dart
Curtidas 0
Respostas
Marlon Spiess
09/10/2003
Olá,
vc pode usar no evento onkeyup do edit a função
tabela.findnearest([strtoint(edit1.text)])
é uma alternativa.
Espero ter ajudado
vc pode usar no evento onkeyup do edit a função
tabela.findnearest([strtoint(edit1.text)])
é uma alternativa.
Espero ter ajudado
GOSTEI 0
Dart
09/10/2003
Valeu Marlon
Na verdade eu queria mais completo. Assim que digita-se o numero do lacre em um edit fize-se uma pesquisa na tebela de lacres onde tem as imformações do status do lacre.
Tipo se o campo status da tabela conter ´estoque´ então posso usar o lacre.
Se o campo status conter ´usado´ então apareça uma mensagem com informações do lacre tipo data do uso , atestato usado para o lacre e se ja foi retirado do equipamento.
Acho que em SQL isso dever ser facil e que nao sei direito como usar.
Se não fui muito claro me avisem que vou tentar explicar melhor.
Valeu
Dart
Na verdade eu queria mais completo. Assim que digita-se o numero do lacre em um edit fize-se uma pesquisa na tebela de lacres onde tem as imformações do status do lacre.
Tipo se o campo status da tabela conter ´estoque´ então posso usar o lacre.
Se o campo status conter ´usado´ então apareça uma mensagem com informações do lacre tipo data do uso , atestato usado para o lacre e se ja foi retirado do equipamento.
Acho que em SQL isso dever ser facil e que nao sei direito como usar.
Se não fui muito claro me avisem que vou tentar explicar melhor.
Valeu
Dart
GOSTEI 0
Bacalhau
09/10/2003
Na propriedade OnKeyDown do Edit, coloca um procedure com o seguinte código:
if key = #13 then // foi digitado um Enter
begin
table1.fieldbyname(´Lacre´).asstring := edit1.text;
table1.gotonearest;
if table1.fieldbyname(´Lacre´).asstring = edit1.text then
begin
if table1.fieldbyname(´Status´).asstring = ´estoque´
then showmessage(´estoque´);
if table1.fieldbyname(´Status´).asstring = ´retirado´
then showmessage(´retirado´);
if table1.fieldbyname(´Status´).asstring = ´em uso´
then showmessage(´em uso´);
end; // se o lacre foi encontrado
end; // se foi digitado um Enter
Esta é a base. Agora tens de enriquecer o código para obteres o que pretendes. Isto só funciona se houver um indice segundario do campo Lacre
abraço
bacalhau
if key = #13 then // foi digitado um Enter
begin
table1.fieldbyname(´Lacre´).asstring := edit1.text;
table1.gotonearest;
if table1.fieldbyname(´Lacre´).asstring = edit1.text then
begin
if table1.fieldbyname(´Status´).asstring = ´estoque´
then showmessage(´estoque´);
if table1.fieldbyname(´Status´).asstring = ´retirado´
then showmessage(´retirado´);
if table1.fieldbyname(´Status´).asstring = ´em uso´
then showmessage(´em uso´);
end; // se o lacre foi encontrado
end; // se foi digitado um Enter
Esta é a base. Agora tens de enriquecer o código para obteres o que pretendes. Isto só funciona se houver um indice segundario do campo Lacre
abraço
bacalhau
GOSTEI 0
Marlon Spiess
09/10/2003
Dart, o exemplo do amigo bacalhau, está mais completo, acho q dá pra ter uma idéia melhor, mas o que eu quis, é mostrar um caminho, via sql tbm dá, mas acho melhor por essa linha. Como no meu exemplo, o primeiro, as informações já estão lá, é só vc trabalahr elas.
Espero ter ajudado.
Boa Sorte e qualquer coisa MP-me;
Espero ter ajudado.
Boa Sorte e qualquer coisa MP-me;
GOSTEI 0
Dart
09/10/2003
Muito obrigado Marlon e bacalhau
Um dia eu estarei respondendo topicos assim como vcs fazem para
ajudar.
Esse e meu primeiro Sistema apesar de ser simples mas ser amuito util onde eu trabalho.
E isso pode me garantir uma promoção. (É ... Mais trabalho). :)
Valeu
Dart
Um dia eu estarei respondendo topicos assim como vcs fazem para
ajudar.
Esse e meu primeiro Sistema apesar de ser simples mas ser amuito util onde eu trabalho.
E isso pode me garantir uma promoção. (É ... Mais trabalho). :)
Valeu
Dart
GOSTEI 0
Bacalhau
09/10/2003
manda sempre. há pelos menos umas 500 maneiras de fazer. Só demos as pistas
abraço
abraço
GOSTEI 0
Dart
09/10/2003
so mais uma coisa
e que ele so faz a pesquisa no primeiro registro .
como fazer para ler a tabela inteira.
valeu
Dart
e que ele so faz a pesquisa no primeiro registro .
como fazer para ler a tabela inteira.
valeu
Dart
GOSTEI 0
Dart
09/10/2003
Como faz para ler a tabela toda para verificar as situações dos lacres.
GOSTEI 0
Dart
09/10/2003
so falta isso ..... :cry:
GOSTEI 0
Thalesribeiro
09/10/2003
so falta isso ..... :cry:
Faça um laço na tabela lacre com o comando while..do
por exemplo
while (not lacre.EOF) do
begin
a opção q quiser filtar
end;
GOSTEI 0
Dart
09/10/2003
eu fiz assim so que ainda não finciona.
while (not tblacre.EOF) do
begin
if tblacre.FieldByName(´lacres´).asstring <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end;
end;
o que estou fazendo de errado?
while (not tblacre.EOF) do
begin
if tblacre.FieldByName(´lacres´).asstring <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end;
end;
o que estou fazendo de errado?
GOSTEI 0
Marlon Spiess
09/10/2003
Olá Dart,
inicialmente, a tabela é em paradox, vc definiu como chave o campo lacre ?
Se definiu como chave, não há a necessidade de fazer um varedura, basta dar um find, caso contrario esse ai é o caminho. Outro exemplo, tendo como base o campo Lacre como chave, vc tem um Edit qualquer, onde vai digitar o nr do lacre, então:
no evento onexit do Edit vc digita
var
cod : integer;
begin
try cod := strtoint(Edit.Text);
except cod := 0
end;
if cod > 0 then
if Tabela.findkey([cod]) then
begin
// ai já tem todas informações do registro
if TabelaStatus.value = ´usado´ then
showmessage(´lacre já usado´);
end
else
showmessage(´Lacre não cadastrado´)
else
showmessage(´Nro do Lancre invalido´);
// observe q antes do else não vai o ponto e virgula
Essa rotina resolve muito bem.
Esero ter ajudado
Boa sorte
inicialmente, a tabela é em paradox, vc definiu como chave o campo lacre ?
Se definiu como chave, não há a necessidade de fazer um varedura, basta dar um find, caso contrario esse ai é o caminho. Outro exemplo, tendo como base o campo Lacre como chave, vc tem um Edit qualquer, onde vai digitar o nr do lacre, então:
no evento onexit do Edit vc digita
var
cod : integer;
begin
try cod := strtoint(Edit.Text);
except cod := 0
end;
if cod > 0 then
if Tabela.findkey([cod]) then
begin
// ai já tem todas informações do registro
if TabelaStatus.value = ´usado´ then
showmessage(´lacre já usado´);
end
else
showmessage(´Lacre não cadastrado´)
else
showmessage(´Nro do Lancre invalido´);
// observe q antes do else não vai o ponto e virgula
Essa rotina resolve muito bem.
Esero ter ajudado
Boa sorte
GOSTEI 0
Fabio.hc
09/10/2003
eu fiz assim so que ainda não finciona.
while (not tblacre.EOF) do
begin
if tblacre.FieldByName(´lacres´).asstring <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end;
end;
o que estou fazendo de errado?
Está faltando o comando ´next´ avançar p/ o próximo registro.
Tente assim:
while (not tblacre.EOF) do
begin
if tblacre.FieldByName(´lacres´).asstring <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end;
[color=blue:ea8a98cc62] tblacre.next;[/color:ea8a98cc62]
end;
GOSTEI 0
Dart
09/10/2003
if lret.Text = ´´ then
exit;
tblacre.Prior;
while not( tblacre.EOF) do
begin
if tblacrelacres.Value <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end
else
tblacre.Next;
end;
Quando eu digite um lacre que ja na tem tabela ele diz que o lacre não existe e quando digito um lacre que não tem ele diz a mesma coisa.
Ainda não finciona por que? aaaaahhhh
exit;
tblacre.Prior;
while not( tblacre.EOF) do
begin
if tblacrelacres.Value <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end
else
tblacre.Next;
end;
Quando eu digite um lacre que ja na tem tabela ele diz que o lacre não existe e quando digito um lacre que não tem ele diz a mesma coisa.
Ainda não finciona por que? aaaaahhhh
GOSTEI 0
Fabio.hc
09/10/2003
if lret.Text = ´´ then
exit;
tblacre.Prior;
while not( tblacre.EOF) do
begin
if tblacrelacres.Value <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end
else
tblacre.Next;
end;
Quando eu digite um lacre que ja na tem tabela ele diz que o lacre não existe e quando digito um lacre que não tem ele diz a mesma coisa.
Ainda não finciona por que? aaaaahhhh
Tente assim:
Troque o
tblacre.Prior; // volta um registro (se vc está posicionado no ultimo ele volta um registro e faz o ´while´ sempre com um registro)
por
tblacre.First; // posiciona no primeiro registro ( e faz o ´While´ na tabela inteira)
GOSTEI 0
Bacalhau
09/10/2003
Ó homem de Deus, se usas um while not tblacre.EOF faz assim:
antes do tblacre.EOF coloca tblacre.first.
Dentro do ciclo coloca tblacre.next;
Se não fizeres isto amanhã ainda está parado!! :lol: :lol:
abraço e boa sorte
antes do tblacre.EOF coloca tblacre.first.
Dentro do ciclo coloca tblacre.next;
Se não fizeres isto amanhã ainda está parado!! :lol: :lol:
abraço e boa sorte
GOSTEI 0
Dart
09/10/2003
Gente eu desisto, não dá... eu so muito burro .... :x
procedure TFAtestado.LRETExit(Sender: TObject);
begin
tblacre.First;
while not tblacre.EOF do
begin
if tblacre.FieldByName(´lacres´).asstring <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end
else
tblacre.Next;
end;
end;
end.
Não teria que da certo?...
Pois é mas não da certo...
procedure TFAtestado.LRETExit(Sender: TObject);
begin
tblacre.First;
while not tblacre.EOF do
begin
if tblacre.FieldByName(´lacres´).asstring <> lret.Text then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end
else
tblacre.Next;
end;
end;
end.
Não teria que da certo?...
Pois é mas não da certo...
GOSTEI 0
Dart
09/10/2003
o que estou fazendo de errado...
E so para verificar sem este lacre existe na tabela?
:cry:
E so para verificar sem este lacre existe na tabela?
:cry:
GOSTEI 0
Bacalhau
09/10/2003
Tu não és burro. É assim:
procedure TFAtestado.LRETExit(Sender: TObject);
var encontrei : boolean; // leva esta variavel
begin
encontrei := false; // inicializo, em como não encontrei
tblacre.First;
while not tblacre.EOF do
begin
if tblacre.FieldByName(´lacres´).asstring = lret.Text then // igual aqui
encontrei := true; // encontrei o registo!!!
tblacre.Next;
end; // aqui é o fim da pesquisa
// se não encontrou manda mensagem e sai
if not encontrei then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end;
end;
end.
E pronto- Abraço das barbatanas deste peixão!! :lol:
procedure TFAtestado.LRETExit(Sender: TObject);
var encontrei : boolean; // leva esta variavel
begin
encontrei := false; // inicializo, em como não encontrei
tblacre.First;
while not tblacre.EOF do
begin
if tblacre.FieldByName(´lacres´).asstring = lret.Text then // igual aqui
encontrei := true; // encontrei o registo!!!
tblacre.Next;
end; // aqui é o fim da pesquisa
// se não encontrou manda mensagem e sai
if not encontrei then
begin
showmessage(´ Lacre número ´+lret.text+ ´ não existente! ´);
lret.SetFocus;
exit;
end;
end;
end.
E pronto- Abraço das barbatanas deste peixão!! :lol:
GOSTEI 0
Dart
09/10/2003
uhaaaa consegui fazer :D
Valeu gente muito obrigado mesmo.
procedure TFAtestado.LRETExit(Sender: TObject);
var
loc :integer;
begin
loc:=1;
tblacre.First;
if lret.Text = ´´then
exit;
while not (tblacre.EOF) do
begin
if (tblacrelacres.Value <> lret.text) then
loc:=0
else
loc:=1;
if (tblacrelacres.Value = lret.text) and (tblacrestatus.Value = ´Estoque´) then
begin
showmessage(´Lacre número ´+lret.text+´ não pode ser retirado por não constar em nenhum Atestado!´);
lret.SetFocus;
exit;
end;
if (tblacrelacres.Value = lret.text) and (tblacrestatus.Value = ´Retirado´) then
begin
showmessage(´O Lacre número ´´+lret.text+´´ Ja foi usado no atestado número ´´+tblacre.FieldByName(´atestado´).asstring+´´ e Retirado da impressora número ´´+tblacre.FieldByName(´nordem´).asstring+´´!´);
lret.SetFocus;
exit;
end;
if(tblacrelacres.Value = lret.text) and (tblacrestatus.Value = ´Colocado´) then
begin
showmessage(´O Lacre número ´´+lret.text+´´ Pode ser Retirado e foi usado no atestado número ´´+tblacre.FieldByName(´atestado´).asstring+´´ e Colocado na impressora número ´´+tblacre.FieldByName(´nordem´).asstring+´´!´);
exit;
end;
tblacre.Next;
end;
if loc = 0 then
begin
showmessage(´O Lacre número ´´+lret.text+´´ não existe!´);
lret.SetFocus;
end;
end;
era tão simples...
Valeu
Ate o proximo topico.
Valeu gente muito obrigado mesmo.
procedure TFAtestado.LRETExit(Sender: TObject);
var
loc :integer;
begin
loc:=1;
tblacre.First;
if lret.Text = ´´then
exit;
while not (tblacre.EOF) do
begin
if (tblacrelacres.Value <> lret.text) then
loc:=0
else
loc:=1;
if (tblacrelacres.Value = lret.text) and (tblacrestatus.Value = ´Estoque´) then
begin
showmessage(´Lacre número ´+lret.text+´ não pode ser retirado por não constar em nenhum Atestado!´);
lret.SetFocus;
exit;
end;
if (tblacrelacres.Value = lret.text) and (tblacrestatus.Value = ´Retirado´) then
begin
showmessage(´O Lacre número ´´+lret.text+´´ Ja foi usado no atestado número ´´+tblacre.FieldByName(´atestado´).asstring+´´ e Retirado da impressora número ´´+tblacre.FieldByName(´nordem´).asstring+´´!´);
lret.SetFocus;
exit;
end;
if(tblacrelacres.Value = lret.text) and (tblacrestatus.Value = ´Colocado´) then
begin
showmessage(´O Lacre número ´´+lret.text+´´ Pode ser Retirado e foi usado no atestado número ´´+tblacre.FieldByName(´atestado´).asstring+´´ e Colocado na impressora número ´´+tblacre.FieldByName(´nordem´).asstring+´´!´);
exit;
end;
tblacre.Next;
end;
if loc = 0 then
begin
showmessage(´O Lacre número ´´+lret.text+´´ não existe!´);
lret.SetFocus;
end;
end;
era tão simples...
Valeu
Ate o proximo topico.
GOSTEI 0
Bacalhau
09/10/2003
Naice, meu!! Manda sempre. 8)
GOSTEI 0