Newsgroup: it.comp.lang.delphi
Titolo: confronto variabili

                query_mysql1.Close;
                 query_mysql1.SQL.Text := 'select mf_codice from
jos_vm_manufacturer where mf_codice=:codice';
 
query_mysql1.ParamByName('codice').AsString:=cod_ditta;
                 query_mysql1.Open;
                 cod_ditta_mysql := '';
                 cod_ditta_mysql :=
query_mysql1.FieldByName('mf_codice').AsString;
                 if   StrToInt(   trim(cod_ditta_mysql))
=StrToInt(trim( cod_ditta)) then
                 begin
                 Ditta_esiste := true;
                 end
                 else
                 begin
                 Ditta_esiste := false;
                 end;
Questo e' il mio codice ragazzi vi prego aiutatemi. Devo verificare
l'esistenza di una ditta attaraverso il codice.
Tutto funzionava bene, ma ho scoperto che avendo memorizzato i dati
come string non mi distingueva ad esempio il codice 0278 da 278.
Quindi devo per forza trasformare in Integer, e fin qui ci siamo.
Il problema ora e' che quando preleva dal database mysql un dato
inesistente e quindi nella variabile cod_ditta_mysql non vi memorizza
nulla mi da' l'errore nel trasformarlo in Integer.
Cosa faccio?
Raffaele


Spero che il tuo codice non sia indentato come è postato .. c'e' da 
farsi venire il mal di testa :) il trucco é: StrToIntDef
cmq ...
io rivoluzionerei un po' .. troppi begin/end
Var CodSql, CodDitta: Integer;
.....
// se nullo di default = 0
CodSQL:=StrToIntDef(query_mysql1.FieldByName('mf_codice').AsString, 0);
CodDitta := StrToIntDef(cod_ditta,0);
Ditta_esiste := CodSQL = CodDitta;
^_Goblin_^


grazie Goblin
lo avevo gia' pensato ma mi da' problemi comunque
non so' dove
devo ricontrollare

 non so' dove devo ricontrollare
Dovresti essere piu' preciso: che problemi ti da esattamente?
Usando StrToIntDef non dovrebbe dare errore!
Come alternativa, dopo query.open potresti controllare
query.recordcount per vedere se ha restituito 1 record oppure 0
(per query di lookup da pochi record usare recordcount e'
perfettamente legittimo)
ciao
Giacomo

 perfettamente legittimo)
Se devo testare eventuali record in un dataset io propendo piu' per un 
(Bof and Eof) :P
^_Goblin_^
-- 
Ibis et redibis non morieris in bello
http://goblinland.myminicity.com/

 (Bof and Eof) :P
Si hai ragione. E' che io preferisco recordcount perche' spesso
controllo se e' =1 o =2 e quindi mi viene naturale verificare se <>0
invece di usare BOF+EOF
(ma perche' invece di bof+eof non usi IsEmpty()?  :P)
ciao
Giacomo

 Giacomo
function TDataSet.IsEmpty: Boolean;
begin
   Result := FActiveRecord >= FRecordCount;
end;


 IsEmpty()?
Giacomo la recordcount ï¿œ pericolosa se non sai i volumi dei record in 
gioco.
Nel caso della tquery, ad esempio, la recordcount induce un fetchall.
Se guardi nell'help di delphi c'ï¿œ un warning in tal senso che mette in 
guardia dall'uso di questa proprietï¿œ.
cito:
Note:	Use RecordCount with care, because record counting can be a 
costly operation, especially for SQL queries that return large result 
sets. Generally, an application should only use RecordCount with 
Paradox and dBASE tables.
Un bel (bof and eof) ï¿œ cosï¿œ comodo e safe...
Ciao ;)
-- 
Morde

 Un bel (bof and eof) cos comodo e safe...
Allora meglio usare IsEmpty() visto che c'e' perche' reinventare
sempre la ruota?
ciao
Giacomo

 sempre la ruota?
Si infatti credo che l'abbiano introdotto proprio per questo :-)
Ciao
-- 
Morde