PDA

View Full Version : شمارش رکوردها ی جست و جو



vahidkhouy
دوشنبه 09 تیر 1393, 13:55 عصر
در یه بانک اطلاعاتی که اطلاعات ثبت نامی یه مدرسه هستش میخوام بین دو تاریخ مشخص جست و جو کنم و از بین رکورد هایی که پیدا میکنه تعداد اونایی که در فیلدی (مثلا فیلد gensiat) مرد یا زن هستن رو به عنوان نتیجه در یه label بذاره لطفا کمکم کنین.برنامه به زبان دلفی

یوسف زالی
دوشنبه 09 تیر 1393, 14:50 عصر
کوئریتون رو بگذارید تا رفع اشکال کنیم.
تصویر ساختار جداول رو هم بگذارید.
اس کیو ال؟

vahidkhouy
دوشنبه 09 تیر 1393, 19:08 عصر
با سلام
فرم برنامه رو ضمیمه کردم
باز زدن کلید گزارش تاریخی که بین دو edit و edit2 رو جست و جو میکنه و تعداد جنسیت هایی که مرد یا زن هستن رو داخل label 1 قرار میده
مشکل من فقط قسمت بدست اوردن تعداد مرد یا زنه که در فیلد gensidat قرار داره .کد هایی که نوشتم با sql نیست و با زبان دلفیه



ADOTable1.First


while not ADOTable1.Eof do


begin


if (StrToInt(edit1.Text)>=ADOTable1.FieldValues['tarikh']) and


StrToInt(edit2.Text)<=ADOTable1.FieldValues['tarikh']) then






کد تعداد






ADOTable1.Next



end
120637

یوسف زالی
دوشنبه 09 تیر 1393, 20:43 عصر
راههای ساده تری هم هست اما با همین روش اگه می خواهید، یک if بگذارید در حلقه و در صورت مرد بودن، یک شمارنده رو افزایش بدید.

vahidkhouy
دوشنبه 09 تیر 1393, 20:58 عصر
میشه راهنمایی کنید

یوسف زالی
دوشنبه 09 تیر 1393, 22:30 عصر
می تونید یک کوئری دیگه ران کنید که sum بگیره.

pezhvakco
دوشنبه 09 تیر 1393, 22:37 عصر
سلام

بین دو تاریخ مشخص جست و جو کنم و از بین رکورد هایی که پیدا میکنه تعداد اونایی که در فیلدی (مثلا فیلد gensiat) مرد یا زن هستن رو به عنوان نتیجه

اگه یا کد های SQL کار می کنید این رو امتحان نمایید :

procedure TForm1.BitBtn8Click(Sender: TObject);
var
Com_Tx : string;
begin
Com_Tx:='Select (Select Count(Gensiat) AS Exp1 ';
Com_Tx:=Com_Tx + #13 + 'From TableName AS SubTable1 Where SubTable1.id in (Select id ';
Com_Tx:=Com_Tx + #13 + 'From TableName Where (ColDate Betwenn Date01 And Date02) and (Gensiat = ''Man''))) as ExprMan ';
Com_Tx:=Com_Tx + #13 + ', (Select Count(Gensiat) AS Exp2 From TableName AS SubTable1 ';
Com_Tx:=Com_Tx + #13 + 'Where id in (Select id From TableName Where (ColDate Between Date01 And Date02) and (Gensiat = ''WoMan''))) AS ExprWoMan ';
ADODataNew.CommandText:=Com_Tx;
ADODataNew.Open;
Edit_CountMan.Text:=IntToStr(ADODataNew.FieldByNam e('ExprMan').AsInteger);
Edit_CountWoMan.Text:=IntToStr(ADODataNew.FieldByN ame('ExprWoMan').AsInteger);
end;

vahidkhouy
سه شنبه 10 تیر 1393, 21:43 عصر
با تشکر ولی من با adotable کار کردم نه sql
کسی هست بدونه کدش به زبان ذلفی که با adotable باشه چطوریه؟

یوسف زالی
سه شنبه 10 تیر 1393, 22:07 عصر
کدش رو و روشش رو گفتم چطور بنویسید. یکم هم شما زحمت بکشید.

vahidkhouy
سه شنبه 10 تیر 1393, 23:42 عصر
کدش رو و روشش رو گفتم چطور بنویسید. یکم هم شما زحمت بکشید.
ببخشید ولی من از اولم کد sql رو که نمیخوااستم چون با adotable برنامه نوشته شده.پایگاه داده ام اکسسه نه اس کیو ال.

vahidkhouy
چهارشنبه 11 تیر 1393, 18:01 عصر
دوستان کسی نیست جواب سوالم رو بدونه .؟:ناراحت::ناراحت::ناراحت::نا راحت:

hadisalahi2
پنج شنبه 12 تیر 1393, 10:07 صبح
ببخشید ولی من از اولم کد sql رو که نمیخوااستم چون با adotable برنامه نوشته شده.پایگاه داده ام اکسسه نه اس کیو ال
عزیزم دستورات SQL ربطی به بانک اطلاعاتی نداره
شما میتونید توی هر بانک اطلاعاتی از اون استفاده کنید.



Adoqury1.Close;
Adoqury1.Sql.text:='Select Count(ID) as C1 From Table1 Where (Dates Between @D1 AND @D2) And (gensiat =@G1)
​ ADOQuery1.Parameters.ParamByName('D1').Value:=Date 1;// مقدار تاریخ اول ADOQuery1.Parameters.ParamByName('D2').Value:=Date 2; //مقدار تاریخ دوم
ADOQuery1.Parameters.ParamByName('G1').Value:=Gens iyat // مقدار جنسیت
ADOQuery1.Open;
Counts:=ADOQuery1['C1'];