PDA

View Full Version : سوال: بررسی شرط در دستور کوئری SQL در اکسس



microprolog-p96s
چهارشنبه 20 مرداد 1389, 09:12 صبح
سلام
من می خواستم که در این کوئری بررسی کنه که اسمی که وارد می کنیم آیا در بانک موجود هست یا نه . اگه که هست اجازه ثبت اون رو ندهد و اگه که هست اون رو در بانک ثبت ش کنه .

یک فایل هم برای نمونه هست .

از دوستان و اساتید تشکر میکنم

amirzazadeh
چهارشنبه 20 مرداد 1389, 09:36 صبح
سلام
من می خواستم که در این کوئری بررسی کنه که اسمی که وارد می کنیم آیا در بانک موجود هست یا نه . اگه که هست اجازه ثبت اون رو ندهد و اگه که هست اون رو در بانک ثبت ش کنه .

یک فایل هم برای نمونه هست .

از دوستان و اساتید تشکر میکنم
سلام
قبلا در اين مورد تاپيك ايجاد شده كه با جستجو ميتونيد پيداش كنيد ولي به هر حال يك نمونه كد براتون نوشتم متناسب با نمونه خودتون تغييرش بديد:

Private Sub varedkonandeh_NotInList(NewData As String, Response As Integer)
Dim strSQL As String
Dim i As Integer
Dim Msg As String

'Exit this sub if the combo box is cleared
If NewData = "" Then Exit Sub

Msg = "نام مورد نظر جديداست آيا به بانك افزوده شود" & vbCr & vbCr

i = MsgBox(Msg, vbQuestion + vbYesNo + vbMsgBoxRight, "æÇÍÏ ÌÏíÏ ")
If i = vbYes Then
strSQL = "Insert Into importer ([importer name]) values ('" & NewData & "')"
CurrentDb.Execute strSQL, dbFailOnError
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub
البته براي استفاده از اين كد شما بايد از يك كمبو باكس در رويداد not in list استفاده كنيد وگزينه limit to list كمبو بايد به yes تغيير داده بشه.
........................
موفق باشيد

reza_2011
چهارشنبه 20 مرداد 1389, 10:02 صبح
سلام
ضمن تشکر از جناب امیرزاده ، شما می توانید قبل از درج رکورد ابتدا با یک سلکت کنترل کنید آیا رکورد متناظر در بانک وجود دارد یا خیر سپس باقی مراحل را انجام دهید

hossein_sh2008
چهارشنبه 20 مرداد 1389, 12:11 عصر
با سلام
آقا منم هرچي با دستور سلكت مي نويسم دچار مشكل ميشه يا بايد اسم رو كامل بنويسم كه فيلتر كنه
مثلا ح مي نويسم تمام اسمهايي كه ح داخلشه نشون نميده بايد حتما بنويسم حسن

reza_2011
چهارشنبه 20 مرداد 1389, 17:56 عصر
با سلام
آقا منم هرچي با دستور سلكت مي نويسم دچار مشكل ميشه يا بايد اسم رو كامل بنويسم كه فيلتر كنه
مثلا ح مي نويسم تمام اسمهايي كه ح داخلشه نشون نميده بايد حتما بنويسم حسن
سلام
خوب طبیعی است چون متغیر خود را داخل Like قرار نداده اید

microprolog-p96s
یک شنبه 24 مرداد 1389, 00:52 صبح
سلام خدمت آقای میرزا زاده

از جوابی که دادین تشکر میکنم تا قسمتی مشکل من رو حل کرده .
اما به غیر از این که می خوام این طوری تست بشه می خوام که 2 شرط دیگه هم داشته باشه که هر کدوم از بانکهای جداگانه باید تست شود که آیا در اونها بانکها این نام وجود داره یا نه .

اگه که لطف کنید و مشکل نمونه ای که در تایپک اول گذاشتم رو حل کنید ممنون میشم .

hossein_sh2008
سه شنبه 26 مرداد 1389, 00:13 صبح
سلام
خوب طبیعی است چون متغیر خود را داخل Like قرار نداده اید

سلام ،با تشكر از اينكه جواب دادين
ولي ميشه بيشتر توضيح بدين،من به صورت زير نوشتم

Adodc1.RecordSource = "SELECT * FROM moshakhasat WHERE (Name like '" & na.Text & "') and (Family like '" & fa.Text & "')"
Adodc1.Refresh

dadsara
سه شنبه 26 مرداد 1389, 09:49 صبح
سلام
فکر کنم عبارت داخل where باید داخل ( ) باشد

Adodc1.RecordSource = "SELECT * FROM moshakhasat WHERE ((Name like '" & na.Text & "') and (Family like '" & fa.Text & "'))"
Adodc1.Refresh

microprolog-p96s
پنج شنبه 28 مرداد 1389, 07:50 صبح
سلام
من می خواستم که در این کوئری بررسی کنه که اسمی که وارد می کنیم آیا در بانک موجود هست یا نه . اگه که هست اجازه ثبت اون رو ندهد و اگه که هست اون رو در بانک ثبت ش کنه .

یک فایل هم برای نمونه هست .

از دوستان و اساتید تشکر میکنم


این سوال من رو کسی نمی خواد جواب بده ؟ یا شاید نشدنی ؟

amirzazadeh
پنج شنبه 28 مرداد 1389, 10:21 صبح
این سوال من رو کسی نمی خواد جواب بده ؟ یا شاید نشدنی ؟
سلام
دوست من كد ارائه شده همين كار رو ميكنه اگر داده جديد باشه از شما براي ورود اون اجازه ميگيره در غير اينصورت از بين اسامي موجود انتخاب صورت ميگيره.
اگر شما اصرار به استفاده از تكست باكس به جاي كمبو باكس دارين بايد از تابعDCOUNT يا DLOOKUP بهره بگيريد.
[/URL][URL]http://barnamenevis.org/forum/showpost.php?p=618282&postcount=86 (http://barnamenevis.org/forum/showthread.php?t=205914&highlight=%D8%AA%D9%83%D8%B1%D8%A7%D8%B1%D9%8A)
......................
موفق باشيد

microprolog-p96s
پنج شنبه 28 مرداد 1389, 17:51 عصر
سلام
ممنون آقای میرزا زاده
آخه این کار باید با چند شرط انجام میشد .
مشکل من حل شد . خودم راه حلی براش پیدا کردم . به وسیله کدنویسی SQL
باز هم از شما تشکر میکنم .

hossein_sh2008
شنبه 30 مرداد 1389, 05:57 صبح
سلام
فکر کنم عبارت داخل where باید داخل ( ) باشد

Adodc1.RecordSource = "SELECT * FROM moshakhasat WHERE ((Name like '" & na.Text & "') and (Family like '" & fa.Text & "'))"
Adodc1.Refresh


با سلام
آقا من اين كد شما رو هم واسه برنامه ام استفاده كردم امام بايد كامل نام رو بنويسم تا فيلتر بشه
يكي كمك كنه

dadsara
شنبه 30 مرداد 1389, 12:42 عصر
سلام
خوب طبیعی است چون بعد از Like از * استفاده نکردی

hossein_sh2008
جمعه 26 شهریور 1389, 21:08 عصر
ميشه اين دستور رو كسي كامل بنويسه كه چطوري هستش
من كه هرطور اسم و فاميل را مي نويسم تا اسم و فاميل كامل ننويسم فيلتر نمي كنه:عصبانی++:

microprolog-p96s
یک شنبه 28 شهریور 1389, 00:49 صبح
این را بر روی On exit تکس باکس


strSQL = "SELECT tbl_xx_province.province FROM tbl_xx_province WHERE " & _
"((tbl_xx_province.province)='" & strDate & "' );"


این هم با Like بر روی On Change تکس باکس


Me.Recalc
Me.Text4.SetFocus
Me.Filter = "([speech_philosopher]) like '*" & (Nz(Text4, "*")) & "*'"
Me.FilterOn = True
Me.Text4.SelStart = Nz(Len(Text4), 0) + 1