ورود

View Full Version : سوال: طريقه استفاده از كرسر در دلفي



manzare
چهارشنبه 16 مرداد 1387, 07:32 صبح
سلام
من ميخوام يك مجموعه سئوال از بانكم انتخاب بشه و در هر بار اجرا سئوالات در كنترلهايي در فرمم نمايش داده بشه (طوري كه سئوالات هر دفعه دقيقا مثل قبلي نباشه (كمي متفاوت وغير تكراري))
ميخوام براي اين كار كرسر بنويسم نميدونم
1 در محيط دلفي هم ميشه كرسر نوشت؟ اگر نه در كجاي sqlبايد بنويسم ؟

2 از چه كنترلي(ado qry يا...) براي برگرداندن خروجي و ريختن انها در چند lable استفاده كرد ؟
3 نحوه ي اجراش چطوريه؟

vcldeveloper
چهارشنبه 16 مرداد 1387, 12:14 عصر
همینکه دارید از AdoTable یا AdoQuery استفاده می کنید، یعنی کرسری برای شما ساخته شده و دارید ازش استفاده می کنید. البته من اصلا متوجه نمیشم که این کاری که شما می خواید انجام بدید، چه ربطی به ایجاد کرسر داره!
در ضمن، برای ساخت کرسر هم از دستورات SQL استفاده می کنند.

manzare
چهارشنبه 16 مرداد 1387, 19:20 عصر
نيازي به كرسر نيست ؟الان من اين كد را نوشتم يعني يك مجموعه سئوال(داده) الان در adoqury هست درسته؟


with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Text:= 'select qtext , ta,tb from qtable inner join atable on (atable.qcode=qtable. qcode ) and (qtable.type=:t) and (qtable.degree=:d)';
Parameters.ParamByName('d').Value := StrToInt (i);
Parameters.ParamByName('t').Value := StrToInt (j);
Open;
SQL.Text ;

خوب حالا ميشه راهنماييم كنيد با توجه به اينكه در هر بار اجرا تعداد ركورد هايي كه ميخوام در خروجي نمايش داده بشه متفاوت است با چه كدنويسي ميتونم lable ها و rdio grupهايي توليد كنم تا زمان اجرا خروجي كوئري در انها نمايش داده شود

Hsimple11
چهارشنبه 16 مرداد 1387, 21:13 عصر
این چه ارتباطی به کرسر دارد؟

شما یک Select انجام میدهید و کنترلهای دیتابیس خود را به ADOQuery متصل کنید.

manzare
پنج شنبه 17 مرداد 1387, 08:27 صبح
ميشه راهنماييم كنيد با توجه به اينكه در هر بار اجرا تعداد ركورد هايي كه ميخوام در خروجي نمايش داده بشه متفاوت است با چه كدنويسي ميتونم lable ها و rdio grupهايي توليد كنم تا زمان اجرا خروجي كوئري در انها نمايش داده شود
نميدونم چطور كدش را بنويسم (بدون نياز به گذاشتن( دستي)كنترل بر فرم )
ممنون

Hsimple11
پنج شنبه 17 مرداد 1387, 10:58 صبح
اگر صرفا هدف نمایش است از یک ابزار گزارش گیری استفاده کنید .و داده ها را بعد از هربار Querying نمایش دهید. این روش مناسبتری برای خواندن اطلاعات در هربار کوئری گرفتن است. اما اگر باید کنترلها را بسازید میتوانید به تعداد رکوردها بعد از کوئری گرفتن (ADOQuery1.RecordCount) با یک حلقه و استفاده از بلوک Try/Finally برای Free کردن حافظه، کنترلهای خود را Create کنید. البته از Data Control ها استفاده کنید. در مورد تمام این موارد در سایت کدهای مرتبط وجود دارد.