PDA

نسخه کامل مشاهده نسخه کامل : محدودیت در adoquery (محدودیت در جستجوها )



P A R M I S
06-10-2008, 12:32
در برنامم باید با استفاده از یک سری مشخصه ها تعدادی از افراد را از جدولم استخراج کنم مثلا مراقبینی که در فلان تاریخ و در فلان ساعت وقت آزاد برای مراقبت دارند در ضمن از بین این افراد بطور متغیر (یعنی در ساعتی شاید به 10 مراقب و در ساعت دریگر شاید به 20 مراقب نیاز باشد ) به تعداد مورد نظر باید برنامه ام انتخاب کند و انتخاب این 10 نفر از بین مثلا 100 نفری که پیداشده اند و وقت آزاد دارند باید بطور تصادفی باشد اگه ممکنه کمک کنید
در maskedit2 تاریخ وجود داره و فیلد datet مربوط به تاریخ است و پارامتر a1t یکی از فیلدهای جدولم است که درهنگام ثبت اطلاعات مراقبین اگر مراقبین وقت آزاد داشته اند برای آنها در جدولم علامت * زده شده است که حال برای جستجو آنهایی را جستجو می کنم که در عین حال که در نام آنها در جدول ثبت شده است وقت آزاد در تاریخ مشخص شده و در ساعت تعیین شده وقت آزاد داشته باشند




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

romixery
07-10-2008, 18:31
سلام
بعد از اينكه query خودتون رو صدا زدين. از تابع زير استفاده كنيد. اين تابع از نتايج جستجو، يكي رو به طور Random‌ انتخاب مي كنه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشين

P A R M I S
08-10-2008, 16:14
اگه بخوام با توجه به تعداد مراقب لازم که برنامم نیاز داره چند تا سطر بطور تصادفی پیدا کنه چی ؟

P A R M I S
08-10-2008, 16:26
چرا این پیغام رو می ده
[Error] Unit21.pas(210): Undeclared identifier: 'randomrange

romixery
09-10-2008, 16:29
خوب دوست عزيز، معلومه،‌ چون اين تابع (randomrange) در يونيت Math تعريف شده و شما بايد اين يونيت رو در بخش Uses‌ اضافه كنيد.

اگه بخوام با توجه به تعداد مراقب لازم که برنامم نیاز داره چند تا سطر بطور تصادفی پیدا کنه چی ؟خوب دوست عزيز اين تابع رو n بار صدا بزنيد،‌ n بار گزينه تصادفي استفاده مي كنه. اين چيزا ديگه تابلويه ها.

P A R M I S
09-10-2008, 22:38
آخه من می خوام اونا رو تو دی بی گرید نشون بدم با حلقه for می شه (باید از adoquery استفاده کنم دیگه آره )

romixery
10-10-2008, 11:34
(باید از adoquery استفاده کنم دیگه آره )مگه تا حالا استفاده نكردين؟:18: خوب توي كدهايي كه من نوشتم واضح هستش كه از ADOQuery استفاده كردم. اگر استفاده نكردين، حتماً استفاده بكنين. حتماً از Query استفاده بكنين.
ببينين دوست عزيز وقتي شما GBGrid رو به datasource خودتون متصل مي كنيد ، هر درخواستي كه از بانك داشته باشين، در DBGrid نشون داده ميشه. اين مسائل تا دلتون بخواد در انجمن بحث شده. لطفاً قبلش جستجو كنيد.
موفق باشين

P A R M I S
10-10-2008, 15:49
سلام romixery عزیز
چرا من هم دارم از adoquery استفاده می کنم نتیجه یکی از ado رو در یک دی بی گرید نشون می ده که با توجه به شرطهایی که گذاشته ام پیدا می کنه مثلا 20 تا رو در یک دی بی گرید نشون می ده (از دو تا adoquery استفاده می کنم ) مشکلی که دارم با توجه به اون تکه برنامه که نوشتید برای رندم ها من یک button گذاشته ام و اونو که کلیک می کنم مثلا اگه از بین 20تا که در شرط صدق کردن من فقط 8 تا شونو می خوام که در دی بی گرید نشون بده اما همان 20 تارو در دی بی گرید دوم نشون می ده و با زدن دکمه button (تکه برنامه شما ) روی یک سطر قرار می گیره (در حالی که من می خوام کل 20 تا رو دیگه در دی بی گرید نشون نده بلکه فقط همون 8 تا رو نشون بده اگه بازم لازمه بگید تا تکه برنامم رو بنویسم ممنون

P A R M I S
10-10-2008, 18:54
این یک تیکه از برنامم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

با یک قطعه دیگر هم برنامه نوشتم اما اونم مشکل داشت و مشکل در همان نشان دادن همه مثلا 20 تایی که پیدا کردم و به صورت رندوم با زدن دکمه button در دی بی گرید روی سطرهای مختلف پرش می کند اما من می خوام مثلا اون 10 تایی رو که می خوام در دی بی گرید دیگری نشان دهد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


لطفا کمک کنید ممنون

romixery
10-10-2008, 19:15
سلام
ببين دوست عزيز، قطعه كدي كه من نوشتم، مثلاً حاصل نتيجه هاي جستجو 20 ركورد هستش. تابع مياد بصورت random يكي از نتيجه هاي جستجو رو انتخاب ميكنه، نه اينكه ف.يلت.ر كنه. براي مثلا اگه شما 10 بار تابع من رو صدا بزنيد، 10 تا رو بصورت رندوم انتخاب ميكنه، ولي اين 10 تارو كه ف.يلت.ر نميكنه. معلومه كه در DBGrid شما همون 20 نتيجه نمايش داده ميشه. شما نگفتين كه ميخواين كه بصورت رندوم، از حاصل نتايج ف.يلتر شده، دوباره n تا رو ف.لتركنه و در dbgrid نشون بده. شما گفتين كه ميخواين به صورت رندوم يكي رو انتخاب كنه:

در برنامم باید با استفاده از یک سری مشخصه ها تعدادی از افراد را از جدولم استخراج کنم مثلا مراقبینی که در فلان تاریخ و در فلان ساعت وقت آزاد برای مراقبت دارند در ضمن از بین این افراد بطور متغیر (یعنی در ساعتی شاید به 10 مراقب و در ساعت دریگر شاید به 20 مراقب نیاز باشد ) به تعداد مورد نظر باید برنامه ام انتخاب کند و انتخاب این 10 نفر از بین مثلا 100 نفری که پیداشده اند و وقت آزاد دارند باید بطور تصادفی باشد اگه ممکنه کمک کنید حالا ميگيد كه مسئله يه چيز ديگست.

P A R M I S
10-10-2008, 23:14
حالا اینو که گفتم چطور باید انجام بدم می شه کمک کنید ممنون می شم (راستشو بخواید من این سوال رو بصورت کامل هم در تاپیک دیگری مطرح کردم اما جوابی دریافت نکردم و مجبورا در این تاپیک مطرح کردم )

P A R M I S
11-10-2008, 16:24
لطفا کسی به سوالم جو اب بده دیگه

P A R M I S
12-10-2008, 09:07
یک نفر به سوالم جواب بده دیگه خسته شدم هی اومدم و دیدم هنوز کسی جواب نداده کسی نیست ؟

romixery
14-10-2008, 12:03
سلام
شما هم ما رو كشتين از بس التماس كردين.
يه نمونه از برنامه رو نوشتم و براتون آپلود كردم. دانلود كنيد اگه سؤالي داشتين بپرسين تا جوابتون رو بدم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشين

P A R M I S
14-10-2008, 16:58
ممنون دانلود شد ممنون از شما ببخشید ولی حدود 2 هفته است که دنبال جواب بودم البته هنوز تست نکردم ولی همین که جوابم رو دادین ممنون

P A R M I S
14-10-2008, 18:22
با سلام
اون چیزی که من می خوام با این فرق می کنه تکه برنامه شما اینطوریه که مثلا اگه n رو 2 بدیم میاد تعداد سطرها رو بطور تصادفی از بین 0 تا 3 انتخاب می کنه (مثلا شاید یکبار 1 سطر رو نشون بده یکبار 2 تا سطر و شاید هم 3 تا سطر رو نشون بده ) اما من می خوام وقتی n رو می دم 2 ، 3 تا سطر نشان بده ، اگه n رو دادم 10 بیاد از بین کل سطرها بطور تصادفی 11تا رو انتخاب کنه (بطور خلاصه بگم تعداد سطرها رو من یا همون برنامم مشخص می کنه اما اینکه کدوم ها انتخاب بشن باید بطور تصادفی باشه ) انشاا... منظورم رو فهمیده باشین

as13851365
14-10-2008, 20:31
ببینید شما می خواهید از بین رکورد هایی که ثبت کردید تعداد مشخصی رکورد رو به صورت تصادفی انتخاب کنید !!

خوب شما اول یک آرایه ایجاد می کنی و بعد این آرایه را با مقادیر کلید جدول مقدار دهی می کنی

بعد شما یک حلقه به تعداد عدد n ایجاد می کنید و از بین آرایه ها به صورت تصادفی مقداری رو انتخاب می کنید و بر اساس این مقدار رکورد مورد نظر رو از بانک می گشی بیرون و بعد مقدار خانه ی آرایه رو خالی می کنی

اگر باز متوجه نشدی بگو یه برنامه بنویسیم ( امیدوارم که متوجه شده باشی و شر رو کم کنی !! شوخی کردم جدی نگیری یه وقت )

P A R M I S
14-10-2008, 22:24
اتفاقا چون تازه کار دلفی هستم با آرایه یا شاید خیلی چیزهای دیگه کار نکردم و می خواستم با مطالبی که آقا فرهاد نوشته بود کار رو انجام بدم و شروع کنم خوب هم شروع کردم اول که نوشته شما رو داشتم می خوندم می خواستم بگم اگه می شه بفرستین یک نمونه برنامه تا رسیدن به خط آخر که نوشتین ... چرا متاسفانه یا شاید هم خوشبختانه برای شما خیلی ناراحت شدم و می خواستم بگم شما هم از ابتدا شاید اطلاعاتتون در این حد نبوده اگر هم نمی خواین به کسی کمک کنید یا حوصله جواب ندارین خیلی راحت جواب ندین هستن افرادی که جنبه جواب دادن رو داشته باشن (من این حرفها رو جدی جدی گفتم و اصلا هم شوخی ندارم امیدوارم متوجه شده باشین برای این که بدونیم هیچ وقت مغرور نشیم )

F A R H A D
15-10-2008, 08:27
سلام
دوستان عزيز لطفا كمي با هم مهربونتر باشيد. پارميس عزيز مطمئنا دوست عزيزمون as13851365 هم منظوري ندارند، پس لطفا بحث نكنيد. تمام دوستاني كه اينجا هستند بدون هيچ اجباري اطلاعات خودشون رو در اختيار ديگران قرار ميدهند. اگر گاهي اوقات راهنمايي ها آنچنان نيست كه شما انتظار داريد فقط بهتره اعلام كنيد و منتظر جوابهاي بعدي باشيد
من اين تاپيك رو الان كامل خوندم و متوجه شدم كه خود شما هم منظورتون رو از همون اول دقيق بيان نكرديد. اگر منظور شما دقيقا چيزي هست كه در پست #16 گفتيد، مجددا اعلام كنيد تا دوستان عزيز راهنمايي كنند
موفق باشيد

as13851365
15-10-2008, 10:05
متاسفانه یا شاید هم خوشبختانه برای شما خیلی ناراحت شد

داداش شوخی سرت نمی شه ؟ این رو از اول می گفتی که اهل شوخی نیستی ما تکلیفمون رو می فهمیدیم من در آخر نوشته خود چنین گفتم

( امیدوارم که متوجه شده باشی و شر رو کم کنی !! شوخی کردم جدی نگیری یه وقت )


دوستان عزيز لطفا كمي با هم مهربونتر باشي
داداش فرهاد به جان خودم من هیچ قصدی نداشتم ای کاش در قسمت ثبت نام این انجمن بخشی هم با این عنوان وجود داشت که کاربران بتونن درصد پذیرش شوخی رو مشخص کنند که آدم حواسش جمع باشه !!


تمام دوستاني كه اينجا هستند بدون هيچ اجباري اطلاعات خودشون رو در اختيار ديگران قرار ميدهن
آی گفتی خوشم اومد.


من اين تاپيك رو الان كامل خوندم و متوجه شدم كه خود شما هم منظورتون رو از همون اول دقيق بيان نكرديد
این گه چیزی نیست در تایپیک های دیگه ای هم سوالش رو مطرح کرده بود یعنی چنان سوال تو سوال شده بود که نگو و نپرس من در یکی از این تایپیک هاش یه راهنمایی کردم ولی باز در این قسمت دوباره گفته !! ( یا شاید من اشتباه می کنم چیزی ندیدم !!! )

as13851365
15-10-2008, 10:27
می خواستم بگم اگه می شه بفرستین یک نمونه برنامه تا رسیدن به خط آخر که نوشتین ...

فکر کنم قضیه اون سه نقطه در پست قبلی حل شده باشه .


ممنون دانلود شد ممنون از شما ببخشید ولی حدود 2 هفته است که دنبال جواب بودم البته هنوز تست نکردم ولی همین که جوابم رو دادین ممنون
چی می شد به جای این دوهفته ای که دنبالش بودی کمی با دلفی سربه سر می زاشتی تا خودت یه راه حل هر چند دست و پا شگسته پیدا کنی !!

از هرچی بگذریم سخن دوشت خوش تر است ( اگر ما رو دوست خودت بدونی و امیدوارم که سوء تفاهم ها برطرف شده باشه )

خوب سوال شما این است : (اگر اشتباه برداشت کردم شما ببخشید ولی یه چیزی رو مد نظر داشته باش ! داداش بچه زدن نداره ! )

سوال شما :
می خواهم از بین رکورد هایی که انتخاب کردم ( براساس وقت آزاد و ساعت و غیره ) مشخص کنم که مثلا N تا رو به صورت تصادفی برام نشون بده ؟

برای این یه جوابی دارم ولی اون قسمتی رو که گفتید می خواهید وقتی 10 تا رو گفتید برنامه 11 تا رو انتخاب کنه رو نگرفتم !!

ولی جواب شما :
دو راه پیشنهاد می کنم !

1 ) شما هر چند تا از رکورد رو که می خواهید از بانک به صورت تصادفی انتخاب کنید رو در داخل یک حلقه قرار می دید و به تعداد حلقه رکورد رو از بانک می خونید و اگر رکوردی که خوندید با رکورد های خونده شده قبلی برابر بود دوباره از مقدار حلقه یک واحد کم می کنید (منظور از حلقه قطعا for نیست ها while هست !! )
اگر برای این کار مثال خواستی بگو !

2 ) شما یک آرایه که نه شما یک stringList ایجاد می کنید و تمام رکورد هایی رو که می خواهید به صورت تصادفی از بین آنها تعداد n تا رو انتخاب کنید رو در این stringlist اضافه می کنید و بر اساس تعداد مقادیر موجود در این stringlist شما یک عدد تصادفی ایجاد می کنید و مقدار این خط از stringlist رو می خونید و همان خط رو حذف می کنید ...
اگر برای این کار مثال خواستی بگو !

راه اول بیشتر برای مواقعی خوبه که رکوردهای شما بیشتر باشه مثلا شما از بیین 1000 تا رکورد 10 تا رو انتخاب کنید !
روش دوم برای مواقعی که تعداد رکورد شما کمتر باشه خیلی خوبه مثلا از بین 20 تا رکورد 10 تا رو انتخاب کنید !

حالا هر کدوم رو خواستی بگو !


و اگر یه جواب خوب می خواهی این ها رو مشخص کن :

1 ) نام جدولی که می خواهی اطلاعات رو ازش بخونی

2 ) نام فیلدها این جدول

3 ) نام فیلد کلید جدول ( اگر نداشته باشه که کارکمی مشکل می شه !! ولی امیدوارم یک فیلد از نوع کلید داشته باشه )

4 ) اون قسمت از فیـلـتری رو که نوشتی در این قسمت قرار بده منظورم اون قسمت است که داده ها رو بر اساس وقت آزاد و غیره فیـلــتر کردی ( فکر کنم این قسمت رو حل کرده بودی )

5 ) نام Adoquery ای رو که دستورات sql رو توش می نویسی تا بانک رو برات فـیـلـتر کنه رو بنویس

6 ) چه چیزی رو می خواهی برنامه برات نشون بده رو مشخص کن مثلا می خواهی برنامه نام این افرار رو برات نشون بده یا می خواهی به صورت یک stringList برات پاس بده !

7 ) هر چیزی که فکر می کنی به درد ایجاد یک تابع برای شما می خوره رو در این قسمت قرار بده تا با اجازه دوستان یک تابع رو برای شما در این قسمت قرار بدم که مشکلت حل بشه !

as13851365
15-10-2008, 11:14
ببین یه راه حل ساده ساده برات پیدا کردم که خیلی خوشت می آید

فقط کافیست که مقدار کد زیر رو در کد جستجوی خودت اضافه کنی ! باور کن خیلی ساده است


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مقدار x تعداد رکوردی است که می خواهی به صورت تصادفی انتخاب کنی

این هم لینک مربوط به جستجوی من

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


البته این کد در بانک mysql و برنامه php کار کرد وقت نداشتم تو دلفی هم امتحان کنم ولی احتمالا به جواب برسی

اگر باز مشکلی داشتی بگو

P A R M I S
15-10-2008, 13:49
راستشو بخواین من اهل شوخی هستم اما باید در شوخی هامون حواسمون جمع باشه که یه وقت بی احترامی نکنیم اینو که انشاا... خودتون قبول دارین راستشو بخواین دوست ندارم تو انجمن خوبی مثل این انجمن در اون بصورت نامناسب هم دیگر رو خطاب قراردادن یا چیزای دیگه باب بشه و اسمشو بذاریم شوخی شما که به این خوبی دارین کمک می کنید و کمک کردنم بلدید چرا بعداز کمک تهش با یه جمله کار رو خراب می کنید راستشو بخواین من آدم کینه ای نیستم و ممنون از اینکه کمک کردین تستش می کنم ببینم جواب می ده یا نه بابت اونم که گفتین دنبال باش خودم توی دلفی به خیلی چیزای جالب رسیدم ولی اینکه آدم بخواد همه چیز رو خودش بفهمه شاید شدنی باشه ولی زمان خیلی زیاد می بره بازم ازتون ممنونم

P A R M I S
15-10-2008, 14:34
1- نام جدولم ttclock هست
2- فیلدهام


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
3- فیلد ido کلید است
4-

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
5- ازadoquery1 هم استفاده می کنم
6- می خوام برنامم کل فیلدهاشو در دی بی گرید نشون بده (کد نام نام خانوادگی تاریخ و آیا می شه مثلا اگه من الان ساعت امتحانی اول رو جستجو کردم فقط ستون مربوط به ساعت امتحانی اول رو به همراه اطلاعات خط قبل در دی بی گرید نشون بده اگه نمی شه کل ستون های ساعات (ساعت امتحانی اول ، ساعت امتحانی دوم ، ساعت امتحانی سوم و ساعت امتحانی چهارم ))
7- ضمنا دلفی 6 هست و بانکsql و اینکه تعداد سطرهای لازم رو (تعداد مراقب لازم ) که می خواد در دی بی گرید نشون بده از edit5.text دریافت می کنه ممنون


این رو هم که گفتین(((
$q="select * from $table order by rand() limit "+x
مقدار x تعداد رکوردی است که می خواهی به صورت تصادفی انتخاب کنی)))

می شه بگین در کجای برنامم باید استفاده کنم و اینکه اصلا qچی هست از چه نوعی هست و $ ...

P A R M I S
15-10-2008, 14:44
برای این یه جوابی دارم ولی اون قسمتی رو که گفتید می خواهید وقتی 10 تا رو گفتید برنامه 11 تا رو انتخاب کنه رو نگرفتم !!

((همون 10تا رو نشون بده نه 11 تا رو اشتباه شده بود ))

romixery
15-10-2008, 21:12
سلام
متأسفانه تاپيك با پستهاي بيهوده شلوغ شد.
اگر بازم دوست دارين از برنامه من استفاده كنيد فقط كافيه كه اين قطعه كد رو به انتهاي كد كليد Random اضافه كنيد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیديعني در نهايت كل تابع به اين صورت در مياد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدتوجه كنيد كه اگر اين تابع رو در يك تابع تعريفي (كه خودتون تعريف كردين) نوشتين، به جاي Button1.click بايد تابع خودتون رو فراخواني كنيد.
توجه: واقعيتش رو بخواين اين الگوريتم سرعت جستجو و درخواست شما رو پايين مياره، حالا اگه بخواين مي تونيد استفاده كنيد. ولي من شخصاً راضي نيستم. توي اينترنت گشتم تا راه حل بهتري پيدا كنم. نشد. سطح دانش من فعلاً‌ تا همين حد بيشتر قد نداد. شايد اساتيد و دوستان ديگه، راه حل بهتري رو در اختيار شما قرار بدن.
موفق باشين

as13851365
16-10-2008, 13:14
این رو هم که گفتین(((
$q="select * from $table order by rand() limit "+x
مقدار x تعداد رکوردی است که می خواهی به صورت تصادفی انتخاب کنی)))
می شه بگین در کجای برنامم باید استفاده کنم و اینکه اصلا qچی هست از چه نوعی هست و $ ...

من گفتم که این کد رو در php امتحان کردم در واقع اون $q مقدار همان adoquery1.SQL.Add است و $table هم نام جدول شما می باشد !

ولی در حالت کلی اگر شما در هر ساعت ( سایت اول .... ) بخواهید که به صورت تصادفی n تا رکورد رو انتخاب کنید بهتر است از کد زیر استفاده کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

لازم به ذکر است که x تعداد رکورد های تصادفی است که می خواهید انتخاب کنید!

ولی من هرچی امتحان کردم جواب نداد ! فکر کنم این کار ها بیشتر مختص mysql و غیره باشه من از این روش در php استفاده کردم هیچ مشکلی نداشت !!! پس باید به فکر یک تابع باشیم که به نظرم تابعی رو که romixery نوشته خوبه ! ولی باید یه جاهاییش رو اصلاح کرد مثلا اگر می خواهید که مقدار فیلد ها رو صفر در نظر بگیرید بهتر است از دستورات sql برای این کار استفاده کنید مثلا

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در ضمن از کد زیر برای چه منظور استفاده کردید ؟؟؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر می خواهید که تعداد رکورد های انتخاب شده رو به دست بیارید فکر کنم راه ساده تری هم باشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با این کار خیلی زودتر به جواب می رسید

P A R M I S
16-10-2008, 15:39
با سلام
اون قسمت از برنامه رو که دستور limit داره قبلا در اینترنت پیدا کرده بودم که اجرا نمی شد و پیغام incorrect syntaxnear 'limit' a می داد و بخاطر اینکه پست ها شلوغ نشه ننوشتم که جواب نمی ده
و کلا اون برنامه romixeryرو قبلا در اینترنت پیدا کرده بودم اولا نمی دونستم اصلا چه طوری عمل می کنه یعنی

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیداز این دستورات برای چی استفاده کرده (مخصوصا آخری ) و اینکه اصلا چرا باید مقدار فیلد ها رو صفر در نظر بگیریم (طبق اونچه که نوشتین )
و در مورد آخری هم یعنی بدست آوردن نعداد رکوردها رو قبول دارم که با خوندن مطالب آقا فرهاد فهمیده بودم که دیگه فرصت بازگشت و درست کردن اون رو نداشتم و اون برنامه ای رو که می خواستین بنویسین همون هست که در پست 27 قسمت limitنوشتین یا نه هنوز انجام ندادین ؟ اگه دارین روش کار می کنین بگین تا باز هم برای جواب به انجمن سر بزنم ؟

as13851365
16-10-2008, 21:13
ببین با این برنامه ای که romixery نوشته شما یک فیلد از نوع عدد با نام index باید در جدول اضافه کنی و برای این که بتونی رکورد های تصادفی رو انتخاب کنی اول کل انتخاب ها رو صفر می کنی که این همان index=0 می شه

بعد به تعداد رکورد تصادفی مقدار index رو یک می کنی و در آخر هم براساس مقدار index=1 جدول رو فــیلتر می کنی و به خواسته خودت می رسی!!

به نظر من راه حل ایشون یک راه حل خوبی است

ولی راه حل من نیازی به رکورد اضافی نداره و فکر کنم تو همین ساعت ها ( نه روز ها ) یه نمونه برنامه برات در این تایپیک قرار بدم

---------------------------------------------------------------------------------

این هم از فایل مورد نظر :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


بعد از این که به این صفحه رفتی دنبال کلمه Download File بگرد درست وسط صفحه قرار داره بعد روش که کلیک کنی کادر دانلود باز می شه
بعد اگر فایل رو با پسوند html ذخیره کرد پسوندش رو به rar تغییر بده و از زیپ خارجش کن ( برای opera )

P A R M I S
19-10-2008, 09:48
با سلام
و ممنون از کمکتون می خواستم ازتون بپرسم این برنامه ای که نوشتین آیا با دلفی 6 که بانکش sql باشه مشکل داره یا نه ؟ 2 تا مشکل دارم اگه می تونید کمکم کنید
مشکل 1 - چون من هنگامی که از همین برنامه استفاده می کنم و اونو به جدول موجود دربانک خودم (sql) وصل می کنم موقع اجرا پیغامی می ده و برای این خط برنامه
a.Items.Add(inttostr(ADOQuery3ido.value));


خطا می گیره و اینم پیغام خطاش
[Error] Unit1.pas(82): There is no overloaded version of 'IntToStr' that can be called with these arguments




البته همون ابتدا هم که f9 رو برای اجرا می زنم پیغام زیر رو میده
Field form1.adoquery3name does not have a corresponding component . remove the declaration? Yes no


که با زدن دکمه no دوباره پیغامی به همین صورت با form1.adoquery3ido می یاد و با زدن دکمه no دوباره پیغامی به همین صورت با form1.adoquery3familly می یاد و با زدن دکمه no پیغام error بالا می یاد

مشکل 2 - ( البته برنامتون با بانک خودتون درست جواب می ده و همچنین من یک بانک در sql با نام table1 ساختم و فیلدهاش رو همون id,name,family,tel گذاشتم و جواب داد ولی به جدول دیگری که نامش ttclock هست متصل که می کنم اسم فیلد کد اون idoهست و با همون adoquery1 شما استفاده کردم و فقط ارتباطadoconnectionرو به sqlوصل کردم و ارتباط adoquery1 رو هم به (در قسمت sql می نویسم select * from ttclock و می رم و active شو true کنم که پیغام می ده که

Adoquery1:field ‘id’ not found

می خواستم ببینم مشکلش چیه ؟ ممنون ) ) (البته اینو بگم که ارتباطاتم رو تا جایی که می دونم درست انجام می دم )

as13851365
19-10-2008, 11:11
مشکل 1 - چون من هنگامی که از همین برنامه استفاده می کنم و اونو به جدول موجود دربانک خودم (sql) وصل می کنم موقع اجرا پیغامی می ده
ببینید من زیاد با پایگاه داده sql کار نکردم و در این باره نمی تونم کمکی کنم ولی شما می تونید از این روشی که من استفاده کردم الگو بگیرید و در برنامه های خودتان ازش استفاده کنید!


و برای این خط برنامه
a.Items.Add(inttostr(ADOQuery3ido.value));

خطا می گیره و اینم پیغام خطاش
[Error] Unit1.pas(82): There is no overloaded version of 'IntToStr' that can be called with these arguments

این خطا مربوط به خوندن مقدار آی دی از adoquery است ! به عنوان مثال من در این برنامه برای این که مقدار فیلد id رو بخونم از دستور

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
استفاده کردم که ساده ترین راهش است ولی شما می تونید به جای این کد از دستور زیر استفاده کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



البته همون ابتدا هم که f9 رو برای اجرا می زنم پیغام زیر رو میده
Field form1.adoquery3name does not have a corresponding component . remove the declaration? Yes no

که با زدن دکمه no دوباره پیغامی به همین صورت با form1.adoquery3ido می یاد و با زدن دکمه no دوباره پیغامی به همین صورت با form1.adoquery3familly می یاد و با زدن دکمه no پیغام error بالا می یاد
برای این که یه همچین خطایی رو نداشته باشی بهتر است که خطهای زیر رو تغییر بدی !

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بعد کامپوننت ADOQuery1 رو از روی فرم حذف کن و دوباره یک ADOQuery1 روی فرم قرار بده اینجوری فکر کنم مشکلی نخواهید داشت


مشکل 2 - ( البته برنامتون با بانک خودتون درست جواب می ده
اگر برنامه درست کار می کنه پس اون خطاهایی که گفتید رو خودتون حل کردید در غیره این صورت من راهنمایی لازم رو کردم اگر خواستید می تونید دوباره برنامه رو با روش هایی که من گفتم کامپایل کنید


و همچنین من یک بانک در sql با نام table1 ساختم و فیلدهاش رو همون id,name,family,tel گذاشتم و جواب داد
خوب پس تا اینجای کار مشکلی ندارید ! یعنی برنامه به راحتی با کمی تغییر برای بانک sql هم کار می کنه .



ولی به جدول دیگری که نامش ttclock هست متصل که می کنم اسم فیلد کد اون idoهست و با همون adoquery1 شما استفاده کردم و فقط ارتباطadoconnectionرو به sqlوصل کردم و ارتباط adoquery1 رو هم به (در قسمت sql می نویسم select * from ttclock و می رم و active شو true کنم که پیغام می ده که
Adoquery1:field ‘id’ not found
می خواستم ببینم مشکلش چیه ؟ ممنون ) )
اگر کارهایی که در اول همین پست گفتم انجام بدید ( تغییر اون خط از برنامه ) + (حذف adoquery1 از روی فرم و اضافه کردن دوباره اون به فرم و تنظیم آن ) فکر کنم مشکلی نباید داشته باشید اگر باز بعد از این تغییرات مشکلی بود بگید !


(البته اینو بگم که ارتباطاتم رو تا جایی که می دونم درست انجام می دم )
توی این قسمت که شکلی نیست .

P A R M I S
19-10-2008, 15:38
با سلام
ازتون ممنونم راستشو بخواید یکسری تغییرات رو خودم هم دادم ولی انجام نشد تا اینکه اصلا کل همین فرم رو به فرم دیگه ای انتقال دادم و از همین دستور بالا که گفتید فکر کنم برای sql است ولی بازم ممنون درست شد