PDA

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



ahp_online
چهارشنبه 14 تیر 1391, 16:09 عصر
سلام
من یک بانک اطلاعاتی اکسس دارم و می خوام تک تک رکورها را از اول تا آخر با دستور Select انتخاب کنم و به یکی از فیلد هاشو اصلاح و بعد با دستور Insert ذخیره کنم.حالا مشکل من اینه که من با این دستور میتوان رکوردها را تک تک انتخاب کنم:
Select * from inspection where (ID<2)
ولی وقتی از یک حلقه For استفاده می کنم به این صورت:
for i=1 to 2000
select * from inspecton where (ID<i)
next
حالا من کامل ننوشتم ولی به دستور select خطا می ده و متغیر i میگه مچ نیست!!!
حالا میشه راهنمایی کنید که چی کار باید بکنم؟؟

M.T.P
چهارشنبه 14 تیر 1391, 16:53 عصر
اگه فیلد مورد نظرتون برای همه رکورد ها بصورت یکسان قراره اصلاح شه از دستور Update استفاده کنید.

"UPDATE TableName SET FieldName=value"

اگه شرط هم برای اصلاح مدنظرتون هست اینطوری:

"UPDATE TableName SET FieldName=value WHERE FieldName=value"

ahp_online
پنج شنبه 15 تیر 1391, 15:53 عصر
سلام
ممنون از پاسخ تون ولی این مشکل من رو حل نمی کنه!احتمالا سوالم رو بد مطرح کردم و....
ببینید من یک بانک اطلاعاتی با 2000 رکورد اطلاعات دارم و یک فیلد ID که از نوع AutoNymber می باشد شماره رکوردها رو از 1 تا 2000 مشخص کرده.یک فیلد دیگه هم بنام PL دارم.من می خوام از رکورد 1 تا 2000 را در یک حلقه FOR بنویسم که فیلد PL مربوط به هر رکورد رو بخونم و تغییرات لازم رو بدم و بعد ذخیره کنم.حالا مشکلم اینه که تو این دستور
"UPDATE TableName SET FieldName=value WHERE FieldName=value"
که نوشته شده به جای مقدار Value اگر یک متغیر بنویسم که مقدار رو اون متغیر تعیین کنه خطا میگیره.راهی هست که من استفاده کنم؟؟؟
امیدوارم تونسته باشم منظورم رو برسونم.
ممنون

m.4.r.m
پنج شنبه 15 تیر 1391, 22:12 عصر
من با توجه به فهمیده هام از سوال شما این طوری جواب می دم :

شما میگی می خوام از 1 تا 2000 با حلقه For بخونم و و تغییرات لازم رو بدم اونم از طریق فیلد PL خوب شما 2000 تا رکوردم بخونی باید تک تک فیلد ها تغییر بدی اگه مقدار PL شما برای تمامی رکورد های یکسان هستش با دستور Update می تونی انجام بدی اینطوری :
شما نگفتین با چی به دیتابیس وصل شدین من با adodc نوشتم براتون
Dim i as integer

for i= 1 to Adodc.Recordset.RecordCount
adodc.recordset.field("pl")="ورودی دلخواه شما"
adodc.recordset.update
adodc.recordset.movenext
next i

و اینم یه جواب دیگه باز مشکل داشتی اعلام کن توضیح بدیم :

Dim i as integer

for i= 1 to 2000
SQL="UPDATE TableName SET FieldName=value"
next i

M.T.P
پنج شنبه 15 تیر 1391, 23:41 عصر
حالا مشکلم اینه که تو این دستور
"UPDATE TableName SET FieldName=value WHERE FieldName=value"
که نوشته شده به جای مقدار Value اگر یک متغیر بنویسم که مقدار رو اون متغیر تعیین کنه خطا میگیره.راهی هست که من استفاده کنم؟؟؟

متغیرتون رو چطوری تو این دستور به جای value قرار میدید؟

ahp_online
جمعه 16 تیر 1391, 10:05 صبح
سلام
دیتا بیش من اکسس می باشد و با adodb و دستورات sql در ویژوال بیسیک استفاده کردم.ببین من می خوام یکی یکی رکورهای فیلد pl رو بخونم.این دستور Update که شرط value هم داره من مقدار متغیر حلقه for را که میزارم خطا میگیره.میشه این دستور رو طوری نوشت که بجای اینکه مقدار value رو عدد بدی یک متغیر بدی که مقدار داخل اون نشانه value باشد؟؟

M.T.P
شنبه 17 تیر 1391, 00:08 صبح
خود این دستور کل رکورد ها رو ویرایش می کنه نیاز به حلقه نیست.

به عنوان مثال شما می خواید هرچی اسم حسن تو جدول دارید رو به وحید تغییر بدید:
البته این یک مثال هست و شما باید نام جدول و فیلد و عناوین ویرایش رو مطابق با برنامه خودتون وارد کنید


Dim strSql As String
Dim strOldName As String
Dim strNewName As String

strOldName = "hasan"
strNewName = "vahid"

strSql = "UPDATE TableName SET FieldName='" & strNewName & "' WHERE FieldName='" & strOldName & "'"

ahp_online
شنبه 17 تیر 1391, 09:56 صبح
سلام
مهندس جان تمام فیلد ها رو نمی خوام تغییر بدم.نام ها یکی نیست!! بعدم من می خوام رکورها رو یکی یکی select کنم و تغییرات رو هر رکورد با رکورد دیگه فرق میکنه!!!
لطفا بگید چطوری میشه یکی یکی رکوردها رو select کرد؟؟؟

ahp_online
یک شنبه 18 تیر 1391, 16:08 عصر
کسی نیست مشکل منو حل کنه؟؟؟