PDA

View Full Version : سوال: بررسی وجود داده در بانک



kashir
دوشنبه 26 مهر 1389, 16:58 عصر
سلام دوستان
فرض کنید یه تکست باکس داریم با یه دکمه
حالا تو رویداد کلیک دکمه دستورات زیر رو دارم


strSql = "select * from mehr where nationalcode='" & txt_nacode.Text.Trim & "'"
newMode = False
con = New SqlConnection(strCon)
con.Open()
da = New SqlDataAdapter(strSql, con)
da.Fill(ds, "mehr")
ComboBox1.DataBindings.Add(New Binding("Text", ds, "mehr.nationalcode"))
Label1.DataBindings.Add(New Binding("Text", ds, "mehr.name"))
Label2.DataBindings.Add(New Binding("Text", ds, "mehr.lastname"))
Label3.DataBindings.Add(New Binding("Text", ds, "mehr.fathername"))
Label4.DataBindings.Add(New Binding("Text", ds, "mehr.personalcode"))
con.Close()


اگه مقدار تکست باکس برابر با مقدار موجود در بانک باشه مقدادیر نمایش داده میشن ولی اگه اشتباه وارد بشه قاطی میکنه
چطوری باید باید شرط بزارم که مقدار فیلد رو با مقادیر بانک مقایسه کنه که اگه وجود داشت اجرا بشه در غیر اینصورت پیام بده
به نظر من یه کومبو باکس بزارم که اطلاعات از بانک گرفته بشه بهتره ولی تو سایت گشتم پیدا نکردم کسی میتونه کمک کنه

Ghaisard
دوشنبه 26 مهر 1389, 18:16 عصر
سلام

اگه ركوردي وجود نداشته باشه كه برنامه قاطي نمي‌كنه، تنها كاري كه مي‌كنه چيزي رو نشون نمي‌ده. مشكلت از جاي ديگست.

با اين حال براي جلوگيري از error مي‌توني كدتو توي Try ... Catch بذاري.

براي نشون دادن فيلدها توي ComboBox مي‌توني از كد زير استفاده كني :


ComboBox1.DataSource = ds.Tables("mehr")
ComboBox1.DisplayMember = "nationalcode"

Ghaisard
دوشنبه 26 مهر 1389, 18:44 عصر
براي چك كردن وجود ركورد مي‌توني از كد زير استفاده كني:



If dt.Rows.Count > 0 Then
'Showing records
Else
'Message
MsgBox("doesn't Exist")
EndIf

kashir
دوشنبه 26 مهر 1389, 20:28 عصر
با تشکر از اینکه جواب دادی
در مورد اولین پست: این کدو چطوری استفاده کنم هر کاری کردم نشد
در مورد پست دومی: این کد یعنی چی؟ متوجه منظورم نشدیا گفتم یه تکست دارم وقتی داده ای وارد کردم داده رو با رکوردهای موجود در اون ستون مقایسه کنه اگه وجود داشت کاری انجام بده اگه نه ارور بده

Ghaisard
دوشنبه 26 مهر 1389, 22:58 عصر
دوست عزيز اين error ي كه برنامت مي‌ده به خاطر اشتباه وارد كردن داده توي textbox نيست
به خاطر DataBinding هايي كه توي كدت گذاشتي چون كه هر دفعه يه مقداري رو بهش مي‌دي.

كدت رو اصلاح كردم:



strSql = "select * from mehr where nationalcode='" & txt_nacode.Text.Trim & "'"
newMode = False
con = New SqlConnection(strCon)
con.Open()
da = New SqlDataAdapter(strSql, con)
da.Fill(ds, "mehr")
If ds.Tables("mehr").Rows.Count > 0 Then
Label1.DataBindings.Clear()
Label1.DataBindings.Add(New Binding("Text", ds.Tables("mehr"), "name"))
Label2.DataBindings.Clear()
Label2.DataBindings.Add(New Binding("Text", ds.Tables("mehr"), "lastname"))
Label3.DataBindings.Clear()
Label3.DataBindings.Add(New Binding("Text", ds.Tables("mehr"), "fathername"))
Label4.DataBindings.Clear()
Label4.DataBindings.Add(New Binding("Text", ds.Tables("mehr"), "personalcode"))
Else
MsgBox("Doesn't exist")
EndIf
con.Close()

kashir
سه شنبه 27 مهر 1389, 02:46 صبح
بابت جواب ممنونم
یه سوال دیگه:
حالا اگه بخوام شرط رو در فرم1 بررسی کنم اگه درست بود بره به فرم 2

حالا در فرم 2 اطلاعات وارد میشه، میخوام فرم رو مجددا لود کنم تا اطلاعاتم بروز بشه ولی فرم 2 توسط فرم 1 فراخوانی شده بود
راه حلی هست که بتونم بعد از هر بار ورود داده ها و فشردن دکمه ثبت فرمم رو آپدیت کنم؟؟

Ghaisard
سه شنبه 27 مهر 1389, 11:25 صبح
براي اين كار مي‌توني يه تابع public توي Form1 بنويسي و همه‌ي كدهايي كه موقع فراخواني
Form2 اجرا مي‌شه رو توي اون تابع قرار بدي البته به جز كد: Form2.ShowDialog



Public Sub FrmUpdate()

EndSub


و موقعي كه دكمه ثبت روي Form2 رو مي‌زني اون تابع رو فراخواني كن:


Form1.FrmUpdate()


بايد برنامت باشه تا بتونم دقبق تر توضيح بدم
اميدوارم كه متوجه شده باشي