![]() |
|
Doğru sonuca ulaşma - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Doğru sonuca ulaşma (/showthread.php?tid=7751) |
Doğru sonuca ulaşma - Mete - 05-06-2024 Selamlar, Sqlite veri tabanında, DERINLIK alanı REAL 11,3 gibi küsürlü sayılar oluyor. Alttaki iki kodun mantığı aynı fakat sonuçlar neden faklı çıkıyor? Bu kodlarla doğu sonuç alıyorum:
sFDQ.Active := False;
sFDQ.Close;
sFDQ.SQL.Clear;
sFDQ.SQL.Add('Select * From Havuz Where Tarih=: Tarih and Alerter=: Aler');
sFDQ.ParamByName('Tarih').AsDate := Date;
sFDQ.ParamByName('Aler').AsString := 'Alerter No';
sFDQ.Prepared := True;
sFDQ.Open;
while Not sFDQ.Eof do
begin
Ml := Trunc(StrToFloat(sFDQ.FieldByName('Ml').AsString)) >= sMl;
Derinlik := Trunc(StrToFloat(sFDQ.FieldByName('Derinlik').AsString)) <= sDerinlik;
if (Derinlik) and (Ml) then
begin
MemoAlerter.Lines.Add('Ml: ' + sFDQ.FieldByName('Ml').AsString);
MemoAlerter.Lines.Add(StringOfChar('-', 104));
end;
sFDQ.Next;
end;
Bu kodlarda genelde eksik veri alıyorum:
sFDQ.Active := False;
sFDQ.Close;
sFDQ.SQL.Clear;
sFDQ.SQL.Add('Select * From Havuz Where Tarih=: Tarih and Derinlik<=: Deri and Ml>=: Ml and Alerter=: Aler');
sFDQ.ParamByName('Tarih').AsDate := Date;
sFDQ.ParamByName('Deri').AsFloat := sDerinlik;
sFDQ.ParamByName('Ml').AsFloat := sMl;
sFDQ.ParamByName('Aler').AsString := 'Alerter No'; (DÜZETTTİM)
sFDQ.Prepared := True;
sFDQ.Open;
while Not sFDQ.Eof do
begin
MemoAlerter.Lines.Add('Ml: ' + sFDQ.FieldByName('Ml').AsString);
MemoAlerter.Lines.Add(StringOfChar('-', 104));
sFDQ.Next;
end;
Doğru sonuca ulaşma - mrmarman - 05-06-2024 İlk göze çarpan "Aler" parametresi ilk sql ile ikinci sql arasında farklı / ters yazılı olabilir mi? Alerter No No Alerter Cvp: Doğru sonuca ulaşma - Mete - 06-06-2024 (05-06-2024, Saat: 22:57)mrmarman Adlı Kullanıcıdan Alıntı: İlk göze çarpan "Aler" parametresi ilk sql ile ikinci sql arasında farklı / ters yazılı olabilir mi? Alerter No İlgili bir durum değil. AsFloat ilgili bir sorun olduğunu düşünüyorum. Alerter No kısmını 2 gün önce fark ettim ve düzelttim. Yedeklemeden alıp buraya eklerken Alerter No kısmı atlamışım. Doğru sonuca ulaşma - 3ddark - 06-06-2024 Doğru dediğin yerde sayıyı trunc ile integer yuvarlayarak işlem yapıyorsun. Hatalı dediğin yerde eğer sayılar virgülü ise ki öyle görünüyor. Bu nedenle aynı sonucu vermez. Cvp: Doğru sonuca ulaşma - Mete - 06-06-2024 (06-06-2024, Saat: 00:31)Mete Adlı Kullanıcıdan Alıntı:(05-06-2024, Saat: 22:57)mrmarman Adlı Kullanıcıdan Alıntı: İlk göze çarpan "Aler" parametresi ilk sql ile ikinci sql arasında farklı / ters yazılı olabilir mi? Bu şekilde doğru sonuçları alabildim. sFDQ.Active := False;
sFDQ.Close;
sFDQ.SQL.Clear;
sFDQ.SQL.Add('Select * From Havuz Where Tarih=:Tarih and Alerter=:Aler');
sFDQ.ParamByName('Tarih').AsDate := Date;
sFDQ.ParamByName('Aler').AsString := 'Alerter No';
sFDQ.Prepared := True;
sFDQ.Open;
while Not sFDQ.Eof do
begin
cMl := Trunc(StrToFloat(sFDQ.FieldByName('Ml').AsString));
cDerinlik := Trunc(StrToFloat(sFDQ.FieldByName('Derinlik').AsString));
if (cMl >= sMl) and (cDerinlik <= sDerinlik) then
begin
MemoAlerter.Lines.Add('Ml: ' + sFDQ.FieldByName('Ml').AsString);
|