locate
Olá pessoal estou com o seguinte problema:
Estou querendo gravar os dados abaixo. Antes de gravar ele verifica usando o ´Locate´ para ver se já existe o registro, ou não. Se não existe ele faz um Insert, senão faz apenas um Edit...
No exemplo abaixo estou querendo gravar a pergunta nº 1 na Fábrica = Matriz.
Mas vou ter outras opções de fábrica para a questão nº1, por exemplo:
Posso ter um registro assim: pergunta nº1, fábrica = Filial1 ou pergunta nº1, fábrica = Filial2. Mas não tá dando certo. Quando é um registro que ainda não existe ele grava certo, mas quando deve gravar um novo faz errado. Alguém pode me ajudar???
if (Pesquisa.Locate(´NumPergunta´, ´1´ ,[]) = false) and (Pesquisa.Locate(´Fabrica´, cbFabrica.Text, []) = false) then begin
Pesquisa.Insert;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´1´;
Pesquisa.FieldByName(´Fabrica´).AsString := cbFabrica.Text;
case rg1.ItemIndex of
-1 : Pesquisa.FieldByName(´Nulo´).AsString := Pesquisa.FieldByName(´Nulo´).Value + 1;
0 : Pesquisa.FieldByName(´Bom´).AsString := Pesquisa.FieldByName(´Bom´).Value + 1;
1 : Pesquisa.FieldByName(´Regular´).AsString := Pesquisa.FieldByName(´Regular´).Value + 1;
2 : Pesquisa.FieldByName(´Ruim´).AsString := Pesquisa.FieldByName(´Ruim´).Value + 1;
end;
end else begin
Pesquisa.Edit;
case rg1.ItemIndex of
-1 : Pesquisa.FieldByName(´Nulo´).AsString := Pesquisa.FieldByName(´Nulo´).Value + 1;
0 : Pesquisa.FieldByName(´Bom´).AsString := Pesquisa.FieldByName(´Bom´).Value + 1;
1 : Pesquisa.FieldByName(´Regular´).AsString := Pesquisa.FieldByName(´Regular´).Value + 1;
2 : Pesquisa.FieldByName(´Ruim´).AsString := Pesquisa.FieldByName(´Ruim´).Value + 1;
end;
end;
Estou querendo gravar os dados abaixo. Antes de gravar ele verifica usando o ´Locate´ para ver se já existe o registro, ou não. Se não existe ele faz um Insert, senão faz apenas um Edit...
No exemplo abaixo estou querendo gravar a pergunta nº 1 na Fábrica = Matriz.
Mas vou ter outras opções de fábrica para a questão nº1, por exemplo:
Posso ter um registro assim: pergunta nº1, fábrica = Filial1 ou pergunta nº1, fábrica = Filial2. Mas não tá dando certo. Quando é um registro que ainda não existe ele grava certo, mas quando deve gravar um novo faz errado. Alguém pode me ajudar???
if (Pesquisa.Locate(´NumPergunta´, ´1´ ,[]) = false) and (Pesquisa.Locate(´Fabrica´, cbFabrica.Text, []) = false) then begin
Pesquisa.Insert;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´1´;
Pesquisa.FieldByName(´Fabrica´).AsString := cbFabrica.Text;
case rg1.ItemIndex of
-1 : Pesquisa.FieldByName(´Nulo´).AsString := Pesquisa.FieldByName(´Nulo´).Value + 1;
0 : Pesquisa.FieldByName(´Bom´).AsString := Pesquisa.FieldByName(´Bom´).Value + 1;
1 : Pesquisa.FieldByName(´Regular´).AsString := Pesquisa.FieldByName(´Regular´).Value + 1;
2 : Pesquisa.FieldByName(´Ruim´).AsString := Pesquisa.FieldByName(´Ruim´).Value + 1;
end;
end else begin
Pesquisa.Edit;
case rg1.ItemIndex of
-1 : Pesquisa.FieldByName(´Nulo´).AsString := Pesquisa.FieldByName(´Nulo´).Value + 1;
0 : Pesquisa.FieldByName(´Bom´).AsString := Pesquisa.FieldByName(´Bom´).Value + 1;
1 : Pesquisa.FieldByName(´Regular´).AsString := Pesquisa.FieldByName(´Regular´).Value + 1;
2 : Pesquisa.FieldByName(´Ruim´).AsString := Pesquisa.FieldByName(´Ruim´).Value + 1;
end;
end;
Daia
Curtidas 0
Respostas
Rjun
19/04/2005
Troque
por
if (Pesquisa.Locate(´NumPergunta´, ´1´ ,[]) = false) and (Pesquisa.Locate(´Fabrica´, cbFabrica.Text, []) = false) then begin
por
if Pesquisa.Locate(´NumPergunta;Fabrica´, VarArrayOf[´1´, cbFabrica.Text,[]) then begin
GOSTEI 0
Rjun
19/04/2005
Desculpe-me.
O certo é :
O certo é :
if Pesquisa.Locate(´NumPergunta;Fabrica´, VarArrayOf[´1´, cbFabrica.Text],[]) then begin
GOSTEI 0
Daia
19/04/2005
Troque
[quote:c0af446ae3]
if (Pesquisa.Locate(´NumPergunta´, ´1´ ,[]) = false) and (Pesquisa.Locate(´Fabrica´, cbFabrica.Text, []) = false) then begin
por
if Pesquisa.Locate(´NumPergunta;Fabrica´, VarArrayOf[´1´, cbFabrica.Text,[]) then begin
deu erro: not enough actual parameters.
Não a sintaxe do que vc mandou usar.. pode me ajudar???
GOSTEI 0
Rjun
19/04/2005
Repare que no primeiro post eu esqueci um ´]´ que corrigi no segundo. Onde deu erro ?
Outra coisa, coloque o ´not´ na frente do (Pesquisa.Locate.
Outra coisa, coloque o ´not´ na frente do (Pesquisa.Locate.
GOSTEI 0
Daia
19/04/2005
Desculpe-me.
O certo é :
if Pesquisa.Locate(´NumPergunta;Fabrica´, VarArrayOf[´1´, cbFabrica.Text],[]) then begin
Sinto muito se eu estou te encomodando é q tô apanhando um monte disse!! Fiz como vc colocou acima, mas deu o mesmo erro denovo e também outro erro: Incompatible Types ´Integer´ and ´TCaption´
GOSTEI 0
Rjun
19/04/2005
De forma alguma você incomada. Gosto de ajudar.
Bom, vamos lá...de que tipo são os campos [b:4c34f5b736]NumPergunta[/b:4c34f5b736] e [b:4c34f5b736]Fabrica[/b:4c34f5b736].
Bom, vamos lá...de que tipo são os campos [b:4c34f5b736]NumPergunta[/b:4c34f5b736] e [b:4c34f5b736]Fabrica[/b:4c34f5b736].
GOSTEI 0
Daia
19/04/2005
NumPergunta é string e fábrica tb...
GOSTEI 0
Rjun
19/04/2005
Coloque o trecho de código que esta dando erro.
GOSTEI 0
Daia
19/04/2005
if not Pesquisa.Locate(´NumPergunta;Fabrica´, VarArrayOf[´1´, cbFabrica.Text],[]) then
O cursor fica parado no erro entre o [ e ´1´...
O cursor fica parado no erro entre o [ e ´1´...
GOSTEI 0
Rjun
19/04/2005
Esta faltando parentesis.
Faça isso
Faça isso
if not Pesquisa.Locate(´NumPergunta;Fabrica´, VarArrayOf([´1´, cbFabrica.Text]),[]) then
GOSTEI 0
Daia
19/04/2005
deu certinho, não sei como te agradecer...
Eu entendi o que estava fazendo errado, mas não tinha noção de como pudesse resolver, não sabia usar o VarArrayOf...
Muito Obrigada...
Eu entendi o que estava fazendo errado, mas não tinha noção de como pudesse resolver, não sabia usar o VarArrayOf...
Muito Obrigada...
GOSTEI 0
Rjun
19/04/2005
Se precisar, estamos por aí.
GOSTEI 0
Leandrosarno
19/04/2005
O que é seu banco de dados? Paradox?
GOSTEI 0