PDA

View Full Version : آموزش: اوردن اطلاعات یک فیلد از DataGridView یا از خود بانک اطلاعاتی sql server به combobox



123s0ran
جمعه 03 آذر 1391, 11:19 صبح
سلام دوستان و اساتید محترم
امیدورارم خوب و سالم باشد.
قبل از هر چیز میخوام تشکر کنم از دوستان و مدیران محترم به خاطر انجمن خوب و مفیدتون....
دوستان من ی برنامه ای طراحی کردم با استفاده از sql server و vb .net اما ی مشکلی برام پیش امده
اونم این که بلد نیستم اطلاعات داخل یک فیلد را چه از DataGridView یا خود بانک اطلاعاتی را از داخل یک combobox نشان بدم یعنی اگر داخل فیلد نام اسم های ( علی - محمد-سارا )باشه این اسم هارا داخل یک cmbo box نشان داده بشه..... اما کد فراخوانشو بلد نیستم لطفا کمک کنید...
مرسی دوستان :بوس:

ehsan-68
جمعه 03 آذر 1391, 11:32 صبح
سلام من از این دستور استفاده کردم و جواب داده ... امیدوارم برای شماهم خوب باشه ...


Private Sub Cbnamecobimehgozar_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Cbnamecobimehgozar.DropDown
Cbnamecobimehgozar.Items.Clear()
rwd.fillDataset("Cobimehgozar", "namebimehgozar", "select namebimehgozar from Cobimehgozar", Cbnamecobimehgozar)
End Sub

123s0ran
جمعه 03 آذر 1391, 11:41 صبح
مرسی اقای hsan-68 (http://barnamenevis.org/member.php?265073-ehsan-68) بابت راهنمایتون اما میشه بگید این شی (rwd.fillDataset)مربوط به کدوم شی هستش؟ جدول یا بانک اطلاعاتی؟

ehsan-68
جمعه 03 آذر 1391, 11:46 صبح
مرسی اقای hsan-68 (http://barnamenevis.org/member.php?265073-ehsan-68) بابت راهنمایتون اما میشه بگید این شی (rwd.fillDataset)مربوط به کدوم شی هستش؟ جدول یا بانک اطلاعاتی؟


rwd مربوط به اتصال به دیتا بیسه ...

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

ehsan-68
جمعه 03 آذر 1391, 11:50 صبح
ComboBOX.Items.Clear()

rwd.fillDataset("TABLE_NAME", "FILD_NAME", "select FILD_NAME from TABLE_NAME", ComboBOX)



اینجوری بهتره ...

123s0ran
جمعه 03 آذر 1391, 11:52 صبح
شرمندم اما من تازه کار هستم و متوجه نشدم که منظورتون چیه من کد کامل رو واستون میزارم اگه میشه بگید توی کدوم قسمت کد قرار بدم...
Imports System.Data.SqlClient

Public Class osh
Private cnnString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=G:\WINDOWSAPP LICATION3\WINDOWSAPPLICATION3\TEST35.MDF;Integrate d Security=True;Connect Timeout=30;User Instance=True"
Private cnn As New SqlConnection(cnnString)
Private cmd As SqlCommand
Private ad As SqlDataAdapter
Private dt As DataTable
Private Sub dgv_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)

End Sub

Private Sub osh_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'Test35DataSet7.Table1' table. You can move, or remove it, as needed.
Me.Table1TableAdapter2.Fill(Me.Test35DataSet7.Tabl e1)
'TODO: This line of code loads data into the 'Test35DataSet6.Table1' table. You can move, or remove it, as needed.
Me.Table1TableAdapter1.Fill(Me.Test35DataSet6.Tabl e1)
'TODO: This line of code loads data into the 'Test35DataSet5.table1' table. You can move, or remove it, as needed.
Me.Table1TableAdapter1.Fill(Me.Test35DataSet6.Tabl e1)


ComboBox1.SelectedIndex = 1
ComboBox3.Items.Add("تهران")
ComboBox3.Items.Add("ارومیه")
ComboBox3.Items.Add("مهاباد")
ComboBox3.Items.Add("بوکان")
ComboBox3.Items.Add("اشنویه")
ComboBox3.Items.Add("پیرانشهر")
dgv.ForeColor = Color.Red
ComboBox1.Items.Add("جستجو بر اساس ساعت")
TextBox1.Text = "ارومیه"
ReloadRecord()
End Sub
Private Function CheckPersonExist(ByVal firstname As String, ByVal lastname As String, ByVal mbda As String, ByVal maqsad As String, ByVal sat As String, ByVal tar As String, ByVal sandali As String, ByVal mablaq As String) As Boolean
Try
cmd = New SqlCommand("Select fname,lname,mbda,maqsad,sat,tar,sandali,mablaq from table1", cnn)
If cnn.State = ConnectionState.Closed Then cnn.Open()
Dim reader As SqlDataReader
reader = cmd.ExecuteReader
Dim value As Boolean = False
While reader.Read
If firstname = reader.GetString(0) And lastname = reader.GetString(1) And mbda = reader.GetString(2) And maqsad = reader.GetString(3) And sat = reader.GetString(4) And tar = reader.GetString(5) And sandali = reader.GetString(6) And mablaq = reader.GetString(7) Then
Return True
Exit While
End If
End While
If value Then
reader.Close()
Return True
Else
reader.Close()
Return False
End If
Catch ex As Exception
cnn.Close()
MsgBox(Err.Description _
, MsgBoxStyle.Critical, "خطا هنگام شناسایی رکورد جدید")
End Try
End Function
Private Sub ReloadRecord()
ad = New SqlDataAdapter("Select * from table1", cnnString)
dt = New DataTable
ad.Fill(dt)
dgv.DataSource = dt
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
If txt1.Text = String.Empty Or txt2.Text = String.Empty Then
MsgBox("لطفاً نام و نام خانوادگی را بنویسید", MsgBoxStyle.Exclamation)
Exit Sub
End If
If CheckPersonExist(txt1.Text, txt2.Text, TextBox1.Text, ComboBox3.Text, ComboBox2.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text) = False Then
If cnn.State = ConnectionState.Closed Then cnn.Open()
Try
cmd = New SqlCommand("Insert Into table1 (fname,lname,mbda,maqsad,sat,tar,sandali,mablaq) Values( @fname,@lname,@mbda,@maqsad,@sat,@tar,@sandali,@ma blaq ) ", cnn)
With cmd
.Parameters.Clear()
.Parameters.AddWithValue("@fname", txt1.Text)
.Parameters.AddWithValue("@lname", txt2.Text)
.Parameters.AddWithValue("@mbda", TextBox1.Text)
.Parameters.AddWithValue("@maqsad", ComboBox3.Text)
.Parameters.AddWithValue("@sat", ComboBox2.Text)
.Parameters.AddWithValue("@tar", TextBox2.Text)
.Parameters.AddWithValue("@sandali", TextBox3.Text)
.Parameters.AddWithValue("@mablaq", TextBox4.Text)
.ExecuteNonQuery()
End With
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical, "Error Happened For Add New Record")
End Try
ReloadRecord()
Else
MsgBox("مشخصات این شخص قبلاً در دیتابیس ثبت شده است" _
, MsgBoxStyle.Exclamation)
End If
cnn.Close()
Catch ex As Exception
cnn.Close()
MsgBox(Err.Description _
, MsgBoxStyle.Critical, "خطا در اتصال به دیتابیس")
End Try
End Sub


Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Try
If dgv.Rows.Count = 0 Then
MsgBox("رکوردی برای حذف کردن وجود ندارد", MsgBoxStyle.Exclamation)
Exit Sub
End If
Dim mRes As DialogResult = MsgBox("آیا واقعاً قصد حذف این رکورد را دارید ؟", MsgBoxStyle.Question + MsgBoxStyle.YesNo)
If mRes = Windows.Forms.DialogResult.Yes Then
cnn = New SqlConnection(cnnString)
If cnn.State = ConnectionState.Closed Then cnn.Open()
Try
cmd = New SqlCommand("Delete from Table1 Where id = " & dgv.CurrentRow.Cells(0).Value, cnn)
cmd.ExecuteNonQuery()
ReloadRecord()
Catch ex As Exception
MsgBox(Err.Description _
, MsgBoxStyle.Critical, "خطا هنگام حذف رکورد")
End Try
End If
cnn.Close()
Catch ex As Exception
cnn.Close()
MsgBox(Err.Description _
, MsgBoxStyle.Critical, "خطا در اتصال به دیتابیس")
End Try
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

End Sub

Private Sub dgv_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellEnter

End Sub

Private Sub ComboBox2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.DropDown
ComboBox2.Items.Clear()
dt.("combobox2", "fname", "select fname from Cobimehgozar", ComboBox2)

End Sub

ehsan-68
جمعه 03 آذر 1391, 11:55 صبح
نام جدول دیتاتون چیه ؟

اونو بذارید جایه این خط Underline...



Private Sub ComboBox2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.DropDown
ComboBox2.Items.Clear()
dt.("TABLENAME", "fname", "select fname from TABLE_NAME", ComboBox2)

End Sub

123s0ran
جمعه 03 آذر 1391, 12:23 عصر
اقای احسان امتحان کردم اما فقط این قسمت ( rwd.fillDataset) ارور میده

rwd.fillDataset("table1", "fname", "select fname from table1", ComboBox3)
:گریه:

ehsan-68
جمعه 03 آذر 1391, 12:29 عصر
اقای احسان امتحان کردم اما فقط این قسمت ( rwd.fillDataset) ارور میده

rwd.fillDataset("table1", "fname", "select fname from table1", ComboBox3)
:گریه:

بجای rwd.fillDataset باید یا ad یا dt خودتونو بذارید ... امتحان کنید تا نشد بگم چی اضافه کنید ...

ehsan-68
جمعه 03 آذر 1391, 12:36 عصر
اگه نشد یه دیتاست اضافه کنید


Private ds As Dataset


و ds رو به اول خط اضافه کنید ...

123s0ran
جمعه 03 آذر 1391, 12:36 عصر
متاسفانه نشد...:ناراحت:

123s0ran
جمعه 03 آذر 1391, 12:58 عصر
این دستوری که کفتید اونم نوشتم اما قسمت fillDataset ظاهر نمیشه

asghar2008
جمعه 03 آذر 1391, 13:03 عصر
سلام
از کد زیر استفاده کن


Private Sub cmbtipshow()
Dim daa As New SqlDataAdapter("select نام فیلد from نام جدول", cnn)
Dim dss As New DataTable
cnn.Open()
daa.Fill(dss)
combobox1.DataSource = dss
combobox1.DisplayMember = "نام فیلد"
cnn.Close()
end sub


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

ehsan-68
جمعه 03 آذر 1391, 13:14 عصر
این دستوری که کفتید اونم نوشتم اما قسمت fillDataset ظاهر نمیشه

filldataset که نباید بیاد اونو من در کد خودم نوشتم ... شما از اون نباید استفاده کنی گفتم dt یا ad یا هم یه دیتا ست درست کنی که کدشو در پست 10 گذاشتم ...

123s0ran
جمعه 03 آذر 1391, 13:31 عصر
filldataset که نباید بیاد اونو من در کد خودم نوشتم ... شما از اون نباید استفاده کنی گفتم dt یا ad یا هم یه دیتا ست درست کنی که کدشو در پست 10 گذاشتم ...

شرمنده اما بدون اون هم ارور دار توی تصویر خودتون نگاه کنید مشخص شده کجا ها ارور میدن
95476

ehsan-68
جمعه 03 آذر 1391, 13:38 عصر
شرمنده اما بدون اون هم ارور دار توی تصویر خودتون نگاه کنید مشخص شده کجا ها ارور میدن
95476

از اینم استفاده کردین ...
Private ds As Dataset
در قسمتی که dt , ad رو معرفی کردین ...

123s0ran
جمعه 03 آذر 1391, 13:48 عصر
95477
بله اون متغیر تعریف کردم تو قسمت private

123s0ran
جمعه 03 آذر 1391, 16:44 عصر
Dim daa As New SqlDataAdapter("select fname from table1", cnn)
Dim dss As New DataTable
cnn.Open()
daa.Fill(dss)
ComboBox3.DataSource = dss
ComboBox1.DisplayMember = "fname"
cnn.Close()
دوست عزیز من این کد شمارو امتحان کردم و به مقداره اسم های که توی فیلد هستش ی چیز های عجیبی رو داخل کمبوباکس نشون میده اما مقداره یا اون نوشته ای داخل فیلد هستش رو نشون نمیده در عکس زیر همه چیز مشخصه


95485

123s0ran
جمعه 03 آذر 1391, 18:25 عصر
یکی پیدا نمیشه تو این ایام روزهای محرم بیادو اقای کنه در راه خدا مارو ی راهنمای کنه.....:ناراحت:

alicomputer
جمعه 03 آذر 1391, 20:05 عصر
Public Class FrmName
Dim SqlCon As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DB\MainDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim Sda As New SqlDataAdapter
Dim Ds As New DataSet
Dim Dr As SqlDataReader
Dim strAction As String
Dim s As String
Dim Dt As New DataTable()
Dim Da As New SqlDataAdapter
Dim cmd As SqlCommand
2-


Private Sub TermComb() '\\show name of term in combobox
CombTerm.Items.Clear()
If SqlCon.State = ConnectionState.Closed Then
SqlCon.Open()
End If
Dim dr As SqlDataReader
Dim cm As SqlCommand
Dim Sql As String
Sql = "select DISTINCT name from Tbl_Term"
cm = New SqlCommand(Sql, SqlCon)
dr = cm.ExecuteReader()
Do While dr.Read
CombTerm.Items.Add(dr("name"))
Loop
dr.Close()
If SqlCon.State = ConnectionState.Open Then
SqlCon.Close()
End If
End Sub

3-
صدا زدن

call TermComb()

123s0ran
جمعه 03 آذر 1391, 20:24 عصر
اقای alicomputer واقعا دستتون درد نکنه به خاطر راهنمایتون و خدا خیرتون بده :قلب:

asghar2008
شنبه 04 آذر 1391, 12:19 عصر
سلام
از کد زیر استفاده کن


Private Sub cmbtipshow()
Dim daa As New SqlDataAdapter("select نام فیلد from نام جدول", cnn)
Dim dss As New DataTable
cnn.Open()
daa.Fill(dss)
combobox1.DataSource = dss
combobox1.DisplayMember = "نام فیلد"
cnn.Close()
end sub







دوست گرامی تو رویدادی که می خواید combobox رفرش بشه تابع cmbtipshow() را فراخوانی کن