PDA

View Full Version : برخورد با مشکل در Query SQL



Delphi KDE
سه شنبه 16 آبان 1385, 09:13 صبح
با سلام

اول از همه باید بگم که این مطلب 100 بار مطرح شده و من تمام مطالب مطرح شده در این مورد رو خوندم ولی مشکلم حل نشد


من از یک Query به شکل زیر استفاده میکنم




DM_Main.Q_Makharej.Close;
DM_Main.Q_Makharej.SQL.Clear;
DM_Main.Q_Makharej.SQL.Add('SELECT Date, Sum(Price)as [PRS] FROM Makharej WHERE DATE Between :P_DATE_AZ AND :P_DATE_TA Group By Date');
DM_Main.Q_Makharej.ParamByName('P_DATE_AZ').Value :=StrToJDN(Me_Date_Az.Text,1);
DM_Main.Q_Makharej.ParamByName('P_DATE_TA').Value :=StrToJDN(Me_Date_Ta.Text,1);
DM_Main.Q_Makharej.Open ;



try
StaticText1.Caption := DigitGroup(IntToStr(DM_Main.Q_Makharej.fieldByName ('PRS').Value))
except
StaticText1.Caption := 'خطا';
End;






این Query از نظر انتخاب محدوده درست عمل میکنه ولی فقط چند رکورد اول بانک رو جمع میکنه

فرزاد دلفی باز
سه شنبه 16 آبان 1385, 10:49 صبح
در مواردی که بین دو تاریخ می خواهی جستجو کنی از این روش استفاده کن



Query1.Active:=False;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM Co_02 Co_02 WHERE (Co_02.Date>=:a) and (Co_02.Date<=:b)');
Query1.Params[0].Value:=MaskEdit1.Text;
Query1.Params[1].Value:=MaskEdit2.Text;
Query1.Active:=True;

Delphi KDE
شنبه 20 آبان 1385, 16:30 عصر
منمون از نظرتون ولی مشکل من SUM است که درست عمل جمع را انجام نمیده و فقط یک یا چند رکورد اول را جمع میکنه در قسمت Select محدوده مشکلی ندارم

Mahyaa
شنبه 20 آبان 1385, 17:16 عصر
سلام
Sum درست عمل نمیکنه چون قسمت Where اونطور که شما میخواهید عمل نمیکنه !
اگر تغییری رو که فرزاد دلفی باز در پست #2 گفته ، اعمال کنید ، احتمالا مشکل حل میشه .

sql_qassem
یک شنبه 21 آبان 1385, 18:32 عصر
سام رو اینطوری بنویس
Sum(isnull(Price,0)) as
چون اغلب اوقات که در فیلد محاسباتی خالی است اینگونه جمع ها بهم می خورند . حتی در جمع و تفریق دو فیلد در کووری هم اشتباه نتیجه را نشان می دهد یا اینکه همه را نال بر می گرداند.

Mahdi_S_T
یک شنبه 21 آبان 1385, 21:34 عصر
در ضمن کدی شبیه آقا فرزاد در ADOQuery جواب نمیده چون روش استفاده از Param در آن کمی تفاوت داره

Delphi KDE
دوشنبه 22 آبان 1385, 18:57 عصر
همانطور که گفتم محدوده select درست عمل میکنه
من فیلدی که میخام sum اون رو حساب کنم در موقع ورود چک میشه و باید حتما یک مقدار عددی در ان فیلد وارد بشه
در ضمن من از DBISAM 4.22 استفاده میکنم

برای بار چندم میگم مشکل من sum است نه محدوده select

MNosouhi
دوشنبه 22 آبان 1385, 20:26 عصر
یه توصیه:
کد Sql رو که نوشتی در خود Sql server تستش کن . اگه اونجا مشکلی نداشت ، اما در DBIsam مشکل داشت ، یعنی اینکه این باگ DbIsam هستش . من تا حالا چند تا باگ پیدا کرده ام (اگه تو همین سایت جستجو کنی می تونی اون باگ هایی رو که گفتم پیداشون کنی)