PDA

View Full Version : مشکل دستورات SQL



ahp_online
دوشنبه 19 تیر 1391, 17:29 عصر
سلام
دوستان من یک بانک اطلاعاتی اکسس دارم .توی این بانک یک فیلد دارم از نوع TXT ،میخوام توبانک سرچ کنم و رکوردهایی که خالی هست رو انتخاب کنم اینطوری استفاده کردم:
REC.open "select *from Table1 where peygiri in Null",cn ....
جالب اینجاست که این فیلد از نوع تکس هست رو لیست نمی کنه ولی فیلدی که از نوع Number هست رو سرچ میکنه و رکورهای خالی رو لیست میکنه!! حالا میخوام بدونم مشکل کار من کجاست؟؟؟

2- سوال دوم من در مورد اینه که من یک فیلد از نوع Number دارم حالا می خوام اطلاعات تعدادی از رکوردهای این فیلد رو باهم جمع کنم چطوری با دستورات SQL اینکار رو بکنم؟؟؟

3- سوال سوم : من تعدادی رکورد رو که قبلا فیلتر کردم و در یک دیتاگرید نمایش دادم ،مثلا 3 تا رکورد که هر رکورد 5 تا فیلدداره رو دیتاگرید نمایش داده می شود حالا می خوام بتونم رکورد اول از بانک رو انتخاب و اطلاعات یک رکورد از فیلد مورد نظر رو بخونم و بعد فیلد دوم را انتخاب و اطلاعات رکورد یکی از فیلدها رو بخونم؟؟ انتخاب تک تک رکوردها در یک مجموعه رو نمی دنم چطوری انجام بدم؟؟؟

دوستان من نحوه اتصال به بانک از کد نویسی ADODB و دستورات SQL استفاده کردم و از ADODC استفاده نکردم!!!

ahp_online
شنبه 24 تیر 1391, 17:04 عصر
من یک فیلد دارم از نوع DateTime می باشد.من می خوام بر حسب تاریخ سورت کنم.مثلا می خوام اطلاعات بانکم که قبل از تاریخ 22/04/1391 می باشد رو فیلتر کنم؟؟ با دستورات SQL هم میخوام کار کنم؟؟
تشکر

mohammadriano
شنبه 24 تیر 1391, 17:22 عصر
من یک فیلد دارم از نوع DateTime می باشد.من می خوام بر حسب تاریخ سورت کنم.مثلا می خوام اطلاعات بانکم که قبل از تاریخ 22/04/1391 می باشد رو فیلتر کنم؟؟ با دستورات SQL هم میخوام کار کنم؟؟
تشکر
تا اون جایی که من اطلاع دارم: متعصفانه دستورات Sql تاریخ شمسی رو ساپورت نمی کنه
بهتره یک فیلد تاریخ میلادی رو هم به Table اظافه کنید و عملیات فیلتر سازی رو روی این فیلد انجام بدید.
موفق باشی

mohammadriano
شنبه 24 تیر 1391, 17:43 عصر
دوستان من یک بانک اطلاعاتی اکسس دارم .توی این بانک یک فیلد دارم از نوع TXT ،میخوام توبانک سرچ کنم و رکوردهایی که خالی هست رو انتخاب کنم اینطوری استفاده کردم:
REC.open "select *from Table1 where peygiri in Null",cn ....
جالب اینجاست که این فیلد از نوع تکس هست رو لیست نمی کنه ولی فیلدی که از نوع Number هست رو سرچ میکنه و رکورهای خالی رو لیست میکنه!! حالا میخوام بدونم مشکل کار من کجاست؟؟؟

dataname.recordsource = "select * from table1 where name = '' "


2- سوال دوم من در مورد اینه که من یک فیلد از نوع Number دارم حالا می خوام اطلاعات تعدادی از رکوردهای این فیلد رو باهم جمع کنم چطوری با دستورات SQL اینکار رو بکنم؟؟؟

باید بانک اکسس خودتون رو باز کنید بعد یک Query Design بسازید و سپس Table مورد نظر رو Add کنید و به نمای SQL view بروید و دستور زیر را وارد کنید :↓

SELECT sum(number) as mysum
FROM Table1;

دستور بالا را اجرا کنید و نتیجه را ببینید
و بعد یک کنترل data به برنامه خودتون اظافه کنید
و در قسمت RecordSource نام کوئری که قبلاً ساختید رو انتخاب کنید
فایل ضمیمه :
89684


3- سوال سوم : من تعدادی رکورد رو که قبلا فیلتر کردم و در یک دیتاگرید نمایش دادم ،مثلا 3 تا رکورد که هر رکورد 5 تا فیلدداره رو دیتاگرید نمایش داده می شود حالا می خوام بتونم رکورد اول از بانک رو انتخاب و اطلاعات یک رکورد از فیلد مورد نظر رو بخونم و بعد فیلد دوم را انتخاب و اطلاعات رکورد یکی از فیلدها رو بخونم؟؟ انتخاب تک تک رکوردها در یک مجموعه رو نمی دنم چطوری انجام بدم؟؟؟


dataname.recordset.move(3)

در ضمن در یادگیری برنامه نویسی شتاب زده عمل نکنید.
با این برنامه می تونید دستورات sql رو تست کنید.
88896
موفق باشی

ahp_online
شنبه 24 تیر 1391, 21:24 عصر
dataname.recordsource = "select * from table1 where name = '' "

باید بانک اکسس خودتون رو باز کنید بعد یک Query Design بسازید و سپس Table مورد نظر رو Add کنید و به نمای SQL view بروید و دستور زیر را وارد کنید :↓

SELECT sum(number) as mysum
FROM Table1;

دستور بالا را اجرا کنید و نتیجه را ببینید
و بعد یک کنترل data به برنامه خودتون اظافه کنید
و در قسمت RecordSource نام کوئری که قبلاً ساختید رو انتخاب کنید
فایل ضمیمه :
89684


dataname.recordset.move(3)

در ضمن در یادگیری برنامه نویسی شتاب زده عمل نکنید.
با این برنامه می تونید دستورات sql رو تست کنید.
88896
موفق باشی
میشه بگید دستور بالا چطور عمل میکنه و عدد 3 رو نوشتید چیکار میکنه؟؟
تشکر

ahp_online
شنبه 24 تیر 1391, 21:29 عصر
سلام
فایل ضمیمه 88896 کامپوننت دیتاگرید میخواد و من ندارمش.اگه میشه اونم بزارید.اگه کامپوننت دیگه هم نیاز داره ممنون میشم بزارید.
تشکر

mohammadriano
شنبه 24 تیر 1391, 21:47 عصر
فایل ضمیمه 88896 کامپوننت دیتاگرید میخواد و من ندارمش.اگه میشه اونم بزارید.اگه کامپوننت دیگه هم نیاز داره ممنون میشم بزارید.
تشکر
حجمش زیاد میشه

میشه بگید دستور بالا چطور عمل میکنه و عدد 3 رو نوشتید چیکار میکنه؟؟
تشکر
در اولین کد name یک فیلد هست می تونید به جای name از فیلد خودتون استفاده کنید
در کد 3 خب همه چیز گویا هستش بانک شما رو به رکورد سوم می بره
این هم نمونه دیگری از دستورات کنترل رکورد

dataname.recordset.movefirst
dataname.recordset.movelast
dataname.recordset.movenext
dataname.recordset.MovePrevious

فکر کنم دستورات بالا نیازی به توضیح نداشته باشند