PDA

View Full Version : دسترسی به رکورد خاصی از کوئری ؟/



nazanin20
چهارشنبه 15 اردیبهشت 1389, 23:54 عصر
با سلام
من با دستور
(x:=Random(ADOQuery1.RecordCount);
یه سطره تصادفی بدست اوردم
حالا با چه دستور به سطر شماره ایکس دسترسی پیدا کنم وفیلدایه نام +نام خانوادگی رو دربیارم
مرسی

Felony
پنج شنبه 16 اردیبهشت 1389, 05:38 صبح
ADOQuery1.RecNo:= X;

nazanin20
پنج شنبه 16 اردیبهشت 1389, 11:03 صبح
arguments are of the wrong type,are out of acceptable range,or are in confulct with one another.

همچین اروری میاد !!!!!!!!
من بعده اون دستور که شما گفتین اینو نوشتم :

label6.caption:=ADOQuery1.FieldValues['name'];


ممنونم%

nazanin20
پنج شنبه 16 اردیبهشت 1389, 11:16 صبح
اوکی حل شد
چون RAND0M X
یه عدد بر میگردونه بین خود صفر تا اون ایکس نه خود ایکس
و چون صفر میومد از اون طرفم سطر صفر نداشتیم ارور میداد !باید نوشت


x:=Random(ADOQuery1.RecordCount)+1;

nazanin20
پنج شنبه 16 اردیبهشت 1389, 11:26 صبح
یه سواله دیگه
تابع random زیاد تصادفی نیس
تو دلفی تابعه دیگه ایم برایه تولید اعداد تصادفی و غیره تکراری هست؟

nazanin20
پنج شنبه 16 اردیبهشت 1389, 11:35 صبح
یه سواله دیگه :
اگه بخام تو کوئری بنویسم مثلا از سطر 2 تا سطر 10 سلکت کن چجوری باید بنویسم ؟؟
ممنونم

حسین شهریاری
پنج شنبه 16 اردیبهشت 1389, 17:48 عصر
سلام


تابع random زیاد تصادفی نیس

نه اصلا این فرمایش شما صحیح نیست.طریقه استفاده شما ایراد داره!


اگه بخام تو کوئری بنویسم مثلا از سطر 2 تا سطر 10 سلکت کن چجوری باید بنویسم ؟؟

اگه جدول شما رکورد خاصی مثل Id داره که از نوع IDENTITY باشه و کلید اصلی باشه و یا فیلدی ترجیحا عددی که کلید جدول باشه شما میتونید با Between این کارا بکنید.
مثال:


Select * from YourTable
where YourField Between 2 and 10

و در بدترین حالت میتونید با Top تعداد رکورد دلخواه را از ابتدا یا انتهای جدول بردارید

موفق باشید

nazanin20
جمعه 17 اردیبهشت 1389, 11:28 صبح
نقل قول:
تابع random زیاد تصادفی نیس
نه اصلا این فرمایش شما صحیح نیست.طریقه استفاده شما ایراد داره!
واقعاً؟؟؟؟!!!!! خب باید چجوری از تابع رندم استفاده کنم ؟؟؟ :افسرده:

Felony
یک شنبه 19 اردیبهشت 1389, 07:57 صبح
اوکی حل شد
چون RAND0M X
یه عدد بر میگردونه بین خود صفر تا اون ایکس نه خود ایکس
و چون صفر میومد از اون طرفم سطر صفر نداشتیم ارور میداد !باید نوشت


x:=Random(ADOQuery1.RecordCount)+1;


میتونید از تابع RandomRange از کتابخانه Math استفاده کنید ، این تابع حد پائین و بالا عددی که باید به صورت تصادفی تولید بشه رو میگیره و عدد رو در اون بازه تولید میکنه ، به عنوان مثال :
Num:= RandomRange(1,ADO_Q1.RecordCount);


نقل قول:
تابع random زیاد تصادفی نیس
نه اصلا این فرمایش شما صحیح نیست.طریقه استفاده شما ایراد داره!
واقعاً؟؟؟؟!!!!! خب باید چجوری از تابع رندم استفاده کنم ؟؟؟
قبل از استفاده از تابع Random متد Randomize رو فراخوانی کنید :
var
Num: Byte;
begin
Randomize;
Num:= Random(100);
end;
دقت کنید که در داخل حلقه نباید از متد Randomize استفاده کرد و فقط یک بار قبل از فراخوانی تابع Random باید صدا زده بشه ، یعنی :
var
Num: array [0..100] of Byte;
I: Integer;
begin
Randomize;
for I := 0 to 100 do
Num[i]:= Random(100);
end;

با مقدار دهی RandSeed میتونید به چیزی که در نظر دارید برسید ، RandSeed عددی تصادفی هست که با عدد شما ترکیب میشه تا اعداد تولید شده هر چه بیشتر به اعداد تصادفی مورد نظر شما نزدیک بشن ، مثلا میتونید RandSeed رو با میلی ثانیه جاری سیستم مقدار دهی کنید .

یک نمونه کد نوشتم که میتونید از ضمیمه دریافت کنید .