Fórum could not convert #277359
15/04/2005
0
´Could not convert variant of type (Null) into type (String)´
Esta é a parte do meu código que faz a gravação:
procedure TForm1.btnConfirmarClick(Sender: TObject);
begin
Pesquisa.Edit;
if rg1.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := (Pesquisa.FieldByName(´Nulo´).Value + ´1´);
end else begin
Pesquisa.FieldByName(´Fabrica´).AsString := cbFabrica.Text;
case rg1.ItemIndex of
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;
é q na verdade ainda não tem nada gravado na tabela, e pego o valor da tabela +1, conforme acima...
Se alguém puder me ajudar...
Daia
Curtir tópico
+ 0Posts
15/04/2005
Elciodramos
Não use .Value quando voce estiver concatenando strings use .asString
[b:0bf2b5806a]Pesquisa.FieldByName(´Bom´).Value + ´1´;[/b:0bf2b5806a] Fica Assim
[b:0bf2b5806a]Pesquisa.FieldByName(´Bom´).asString + ´1´;[/b:0bf2b5806a]
Gostei + 0
15/04/2005
Daia
mas é que daí não consigo gravar na tabela, pois lá o campo está definido como integer, se eu deixar como string ele não soma ao campo o registro que vou gravar, o que posso fazer??
Gostei + 0
15/04/2005
Daia
é um questionário com 7 questões, que tem três alternativas: Bom, Regular e Ruim, então só vou somando as respostas...
Gostei + 0
15/04/2005
Rjun
[b:801238b7df]
Pesquisa.FieldByName(´Ruim´).Value := Pesquisa.FieldByName(´Ruim´).Value + 1;
[/b:801238b7df]
Gostei + 0
15/04/2005
Daia
Gostei + 0
15/04/2005
Daia
Não funciona, porque se eu não tiver nenhum registro na tabela, ele vai dizer que não pode converter nulo em string!!
Aí fiz o seguinte: na tabela eu defini o campo como Number, e usei: Pesquisa.FieldByName(´Ruim´).asString := Pesquisa.FieldByName(´Ruim´).asString + 1; na hora de gravar aí funciona, só que na tabela fica gravado como 1.00, queria que ficasse 1, como faço...., você pode me ajudar?
Gostei + 0
15/04/2005
Rjun
Gostei + 0
15/04/2005
Daia
Consegui resolver meu problema, não uso muito paradox, por isso estava com dificuldades, mas aí fussei um pouco mais e lá tem uma propriedade que é Default Value, aí coloquei 0, aí funcionou beleza...
Obrigada pela atenção!!!!!!!!!!!!!
Gostei + 0
15/04/2005
Daia
Sabe como localizar um registro numa tabela paradox????
Gostei + 0
15/04/2005
Rjun
Olhe os métodos LOCATE e FINDKEY.
Gostei + 0
15/04/2005
Daia
Gostei + 0
15/04/2005
Daia
Porque quando é pergunta nova ele não grava um novo registro.
Vc me entende?
if (Pesquisa.Locate(´NumPergunta´, Pesquisa.fieldByName(´NumPergunta´).Value ,[]) = false) then
begin
Pesquisa.Insert;
if rg2.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := Pesquisa.FieldByName(´Nulo´).Value + 1;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
end else
begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
case rg2.ItemIndex of
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;
end else
begin
Pesquisa.Edit;
if rg2.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := Pesquisa.FieldByName(´Nulo´).Value + 1;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
end else
begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
case rg2.ItemIndex of
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;
end;
Gostei + 0
15/04/2005
Rjun
O campo NumPergunta é inteiro ?
A sintaxe é :
Locate(´NumPergunta´, Variavel, []);
Num post anterior sei, eu coloquei o codigo para por tudo dentro de um FOR.
Gostei + 0
15/04/2005
Daia
acho que preciso declarar que o radiogroup(rg1) corresponde a questão 1, porque senão o locate do jeito que eu fiz, não me resolve de nada, não é???
Gostei + 0
15/04/2005
Rjun
Pelo seu exemplo, teria que ser :
Locate(´NumPergunta´, ´2´, []).
Agora pergunto. Se NumPergunta é um número, pq vc definiu como string ?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)