PDA

View Full Version : نحوه شمارش رکورد های خاص از جدول



hentjanson
یک شنبه 21 بهمن 1386, 08:29 صبح
سلام بچه ها چطور میشه در یک جدول مثلا از فیلد فامیل اون رکورد های به اسم احمد رو شمرد و در یک edit نمایش داد .

Mah6447
یک شنبه 21 بهمن 1386, 09:00 صبح
با یک query به سادگی کد زیر :


With Query1 Do
begin
Sql.clear;
Sql.add(Select Count(*) as Tedad From TableName);
Sql.add(Where FieldName='Ahmad');
Open;
end;
Edit1.text:=Query1.Field[0].asstring;

hentjanson
یک شنبه 21 بهمن 1386, 10:02 صبح
سلام من تازه کارم جوابتون عالی بود ولی من تازه کارم میشه بگین چطور و کجا باد اینو تعریف کنم .

حمیدرضاصادقیان
یک شنبه 21 بهمن 1386, 10:20 صبح
سلام .
خوب شما همین دستوراتی که دوستمون نوشتند رو یک دکمه بر روی فرمت بذار.روش دوبار کلیک کن و همین کد رو بنویس. یک adoquery نیز روی فرم بذارید با یک Editbox همین.

abdollahkochy
یک شنبه 21 بهمن 1386, 10:23 صبح
می توانی این کد را در یک button یا در هر رویدادی که خواستی می توانی قرار بدی

Vahid_moghaddam
یک شنبه 21 بهمن 1386, 10:40 صبح
برای ارتباط با دیتابیس هایی مثل sql یا access یا.... شما باید قبل از هر کاری به دیتابیس متصل بشید. بنابراین نیاز به کامپوننتی مثل AdoConnection دارید. در property های این کامپوننت و کامپوننتهای مشابه، شما می تونید به سادگی (چه به صورت دستی چه با استفاده از ویزارد خود کامپوننتها) کانکشن رو تعریف کنید. بعد از open کردن یا active کردن کامپوننت کانکشن، شما یک اتصال به دیتابیس دارید و در بیشتر برنامه ها همین یک اتصال کافیه.
حالا برای دستیابی به جدول ها و داده ها شما باید از کامپوننتهایی مثل AdoQuery یا AdoTable استفاده کنید. در AdoQuery ، در خاصیت SQL دستورات sql رو اضافه می کنید. مثالهایی که در help دلفی هست، نمونه های خیلی خوبیه. مثالی هم که در همین تاپیک اومده، کاملا روشنه. بعد از اضافه کردن دستورات sql، با استفاده از


Adoquery.open;
یا

Adoquery.execsql;
یا

AdoQuery.Active:=true;

عبارت sql اجرا می شه. اگر حاصل عبارت تعدادی رکورد باشه در query نگهداری می شه تا وقتی query بسته بشه.
مثال:




AdoQuery.Close;
AdoQuery.Sql.Clear;
Adoquery.sql.text:='select Field1,field2,field3 from someTable';
'
adoquery.open;
if adoquery.recordcount>0 then
begin
while not(adoquery.eof) do
begin
someVariable1:=adoquery.fields[0].asstring;
someVariable2:=adoquery.fieldbyname['field2'].asinteger;
someVariable3:=adoquery.fields[2].asvariant;
adoquery.next;
end;
end;


adoquery.close;

Mah6447
یک شنبه 21 بهمن 1386, 12:55 عصر
نگفتید بانک اطلاعات شما از چه نوعی است !؟

hentjanson
یک شنبه 21 بهمن 1386, 18:17 عصر
بانک paradox هستش bde البته من تازه کازم می خوام روند اتصال بانک اکسس رو یاد بگیرم من این کد رو نوشتم نشد

SYNDROME
دوشنبه 22 بهمن 1386, 08:33 صبح
بانک paradox هستش bde البته من تازه کازم می خوام روند اتصال بانک اکسس رو یاد بگیرم من این کد رو نوشتم نشد
کدوم کد رو نوشتید و نشد؟
کدی را که نوشته اید در یانجا قرار دهید و مشکل کد را هم که جواب نداده بنویسید.
موفق باشید

hentjanson
دوشنبه 22 بهمن 1386, 11:06 صبح
سلام من از این استفاده کردم


With Query1 Do
begin
Sql.clear;
Sql.add(Select Count(*) as Tedad From TableName);
Sql.add(Where FieldName='Ahmad');
Open;
end;
Edit1.text:=Query1.Field[0].asstring;
;
ایتن در یک دکمه وارد کردم یعنی روی اون دابل کلیک کردم و اینو نوشتم راستی اون تعداد چیه یا در خط اخر کلمه field میشه کمکم کنید .
اخه تازه واردم میشه بگین چطور میشه تعداد کل رکورد ها رو هم بدست بیارم بانک اکسس هستش اسم فیلد جدول من (نام) هستش می خوام حالا بدونم تو این فیلد چند تا کلمه حامد هستش و تو یک edit نشون بدم .
مرسی

حمیدرضاصادقیان
دوشنبه 22 بهمن 1386, 11:42 صبح
سلام. برای اینکه تعداد کل رکوردهای جدول رو بدست بیارید فقط قسمت where رو از دستوراتتون حذف کنید.



With adoquery1 do
begin
sql.clear;
sql.add('select count(*) as CntName from Table1 where name='Hamed'');
open;
edit1.text:=Fieldbyname('CntName').asstring;
End;

ببینید این کد به این صورت هست که شما دستورات sql رو داخل sql.add که یک رشته هست مینویسید. سپس اونو باید حتما open کنید زیرا اگر execsql کنید مقداری برای شما برگردونده نمیشه. EXECSQL فقط مواقعی به کار میروند که شما بخواهید روی دیتابیس تغییراتی ایجاد بکنید.در غیر اینصورت برای گرفتن یک query بعد از نوشتن اون حتما باید Open کنید.
بعد خط آخر مقدار اون فیلد CntName رو که برابر count اسمهای حامد هست رو به edit1.text اختصاص میده. چون نوع edit1.text از نوع رشته هست اخر اون دستور نوشتیم asstring. که مقدار ما رو به صورت رشته به Edit1.text اختصاص بده.
موفق باشید.

hentjanson
دوشنبه 22 بهمن 1386, 12:06 عصر
With Query1 Do
begin
Sql.clear;
Sql.add(Select Count(*) as Tedad From TableName);
Sql.add(Where FieldName='Ahmad');
Open;
end;
Edit1.text:=Query1.Field[0].asstring;


سلام ببین همین کد رو مد نظر بگیر چه جاهایه این کد رو عوض کنم میشه توضیح بدی
مثلا همین خط Edit1.text:=Query1.Field[0].asstring; اون کلمه field چیه

یا این خط Sql.add(Select Count(*) as Tedad From TableName فقط باید اسم جول رو عوض کنم کافیه اون کلمه tedad چیه یا کلمه field

مرسی

Vahid_moghaddam
شنبه 27 بهمن 1386, 08:56 صبح
field یکی از property های TadoQuery هست. به ترتیب نوشتن عنوان فیلدها در دستور select یا ترتیبشون در دیتابیس، می تونید به فیلدها دسترسی پیدا کنید. field[0] یعنی اولین فیلد داخل query.

در دستور select می تونید جلوی هر فیلد، کلمه ای رو اضافه کنید تا header اون ستون به اون اسم نشون داده بشه. مثلا



select user_first_name as 'FirstName' from users


مقدار فیلد user_first_name رو بر می گردونه با عنوان FirstName . می تونید از این دستور استفاده نکنید.

Mah6447
شنبه 27 بهمن 1386, 09:59 صبح
آموزش پرکاربرد ترین دستورات SQL

Mo1659
دوشنبه 29 بهمن 1386, 03:50 صبح
فرض کن با یک component مثل dbtable به بانکت متصل شدی و فرض کن نام فیلد فامیلت famil باشه حالا با کدی مثل زیر میتونی تعداد اسمهای "احمد" رو حساب کنی

;var i:integer
bagin
;tabel1.first
;i:=0
while tabel1.eof=false do
begin
if tabel1.fieldvalue['famil']='ahmad' then
;i:=i+1
;tabel1.next
;end
;(edit1.text:=inttostr(i)
.end
میتونه این کد را توی روی کلیک یک کلید یا رویداد OnEnter ادیت باکست بنویسی

vafa68
شنبه 18 اردیبهشت 1389, 12:03 عصر
منم دوخت برنامه دارم که تو همین مایه هاست اگر کسی کار ای دو خط رو کاملا فهمید خاهشآ به ماهم بفهمونه اونم خط به خط ممنون....:عصبانی++:

Adodc2.RecordSource = "SELECT * FROM Factor_Detail INNER JOIN Servise ON Factor_Detail.Factor_ID = Servise.Factor_ID WHERE Servise.Moshtarak_ID=" & Moshtarak_ID
Adodc2.Refresh

Adodc3.RecordSource = "SELECT Sum(Sum_Price)AS SS,Count(Factor_ID)AS TT FROM Servise WHERE Moshtarak_ID=" & Moshtarak_ID



Adodc3.Refreshh_bavafa68@ymail.com

sips65
یک شنبه 19 اردیبهشت 1389, 09:26 صبح
سلام من یه PDF واست میذارم که همه مشکلاتت رو حل میکنه