PDA

View Full Version : پر کردن dataset



m_zamani
پنج شنبه 26 بهمن 1385, 10:04 صبح
یکی به من کمک کنه ، بخدا یک ماهه تو باند کردن یک رکورد جدولم به فرم موندم
همش پیغام میده
نمی تونم یک dataset رو با یک رکورد جدولم پر کنم

m_zamani
پنج شنبه 26 بهمن 1385, 10:05 صبح
اگه کسی نمونه برنامه داره برام بذاره، ممنون میشم

asar_001
جمعه 27 بهمن 1385, 09:36 صبح
سلام
اگه می خوای اطلاعاتی را روی فرمت نشون بدی سریع ترین راهش استفاده از ریدره:


sqlcommand1.CommandText = " SELECT col1,col2 FROM tbl
Dim SqlReader As System.Data.SqlClient.SqlDataReader
If sqlcommand1.Connection.State <> ConnectionState.Open Then
sqlcommand1.Connection.Open()
End If
SqlReader = sqlcommand1.ExecuteReader
While SqlReader.Read
txt1.text = SqlReader.Item("col1")
txt1.text = SqlReader.Item("col2")
End While
sqlcommand1.Connection.Close()

حالا اگه می خوای اونو مستقیم save کنی که از دستور زیر استفاده کن


sqlcommand1.CommandText = "UPDATE tbl " & _
" SET col1 = " & txt1.text & ", col2 = " & txt2.text

و اگه می خوای اونو به عنوان یه ردیف توی dataset بریزی اول یه dataset به وسیله generate کردن dataadaptor میسازی و کد زیر را استفاده می کنی


Dim dr As DataRow
dr = dataset1.tbl.NewtblRow
dr("col1") =txt1.text
dr("col2") = txt2.text
Dataset1.tbl.AddtblRow(dr)

m_zamani
شنبه 28 بهمن 1385, 11:25 صبح
If cmd.Connection.State <> ConnectionState.Open Then
cmd.Connection.Open()
End If
ببین از datareader استفاده کردم اما روی خط بالا پیغام میده

پیغامش اینه
null reference exeption was handeled

asar_001
یک شنبه 29 بهمن 1385, 16:42 عصر
بهتر نیست تو برنامتو بذاری اینجا تا راحتتر بشه فهمید مشکلت کجاست

asar_001
یک شنبه 29 بهمن 1385, 16:52 عصر
ممکنه command را new نکرده باشی
اونو تو سورس ساختی یا از روی کنترل ها کشیدی روی فرم؟

alsman
یک شنبه 29 بهمن 1385, 17:23 عصر
بهتر از این روش اینه که اول یه Data Set درست کنی و در داخل اون DataTable مربوطه را اضافه کنی این کار باعث میشه تا بتونی در جاهای مختلف از این اطلاعات استفاده کنی و در ضمن Command های Select و Update را هم به صورت اتوماتیک برات ایجاد می کنه و اون وقت میتونی هم به صورت مستقیم و هم به صورت غیر مستقیم (Binding Source )اطلاعات رو به تمام Control های روی فرمت Bind کنی .موفق باشی رفیق اگر باز هم نتیجه نگرفتی بگو تا اگه بتونم کمکت کنم

m_zamani
دوشنبه 30 بهمن 1385, 07:03 صبح
خوب من که یه dataset ایجاد کردم و table رو بهش اضافه کردم اما چجوری می تونم bind کنم به فرم

alsman
دوشنبه 30 بهمن 1385, 08:11 صبح
تو Property های هر کنترل یه Tab وجود داره به نام Data اونجا عنوان Property هایی که میتونی به DataSource متصل کنی رو نمایش میده .فقط کافیه اونجا Dataset و فیلد مورد نظرت رو انتخاب کنی .
یه نکته .برای نمایش اطلاعات داخل کنترل حتما باید Dataset رو Fill کنی
کار های بالا از طریق کد نویسی هم ممکنه

alsman
دوشنبه 30 بهمن 1385, 08:27 صبح
من یه برنامه کوچیک با #C برات گذاشتم .امیدوارم کمکت کنه

m_zamani
دوشنبه 30 بهمن 1385, 11:06 صبح
من نتونستم این فایل رو باز کنم توی ویژوال

linux
دوشنبه 30 بهمن 1385, 12:00 عصر
من نتونستم این فایل رو باز کنم توی ویژوال

برای پر کردن دیتابیس شما 2روش داری
1- بکارگیری ویزارد
2-برنامه نویسی
ویزارد آنقدر قوی هست که می شود در برنامه های کاربردی بزرگ هم از آن استفاده کرد.
از منوی data گزینه add new datasource را انتخاب کن بقیه را هم طبق راهنمایی ویزارد ادامه بده. بعد از اینکه دیتاست ایجاد شده از تول باکس datasource هر فیلدی که می خواهی به فرمت اضافه کن خود ویزارد کدها را هم می سازه.

2- برنامه نویسی
برای این قسمت هم چند حالت مختلف پیش می آید
حالا شما از ویزارد استفاده کن جواب نگرفتی بقیه اش را با هم پیش می رویم

m_zamani
دوشنبه 30 بهمن 1385, 12:34 عصر
ببینید من dataset رو ایجاد کردم، جداولی که نیاز دارم هم توش هست
حالا باید فیلدها رو بذارم روی تکست باکسهایی که می خوام ؟!
بقیه کار چی؟

linux
دوشنبه 30 بهمن 1385, 13:45 عصر
ببینید من dataset رو ایجاد کردم، جداولی که نیاز دارم هم توش هست
حالا باید فیلدها رو بذارم روی تکست باکسهایی که می خوام ؟!
بقیه کار چی؟
از منوی دیتاسورس تول باکس فیلد ها را بگیر و توی فرم بنداز

m_zamani
دوشنبه 30 بهمن 1385, 14:40 عصر
با اینکار چه اتفاقی میفته ؟
بایند میشه به فرم؟

PC2st
سه شنبه 01 اسفند 1385, 00:42 صبح
ببینید من dataset رو ایجاد کردم، جداولی که نیاز دارم هم توش هست
حالا باید فیلدها رو بذارم روی تکست باکسهایی که می خوام ؟!
بقیه کار چی؟


برای Bind کردن یک فیلد خاص از جدول به یک کنترل مثل TextBox:


textBox1.DataBindings.Add("Text", ds.Tables("tableName"), "fieldName")

در کد فوق، tableName نام جدول در dataSet و fieldName نام فیلد برای اینکه درون textBox1 قرار گیرد، و ds هم یک شئ ایجاد شده از کلاس DataSet میباشد.

حالا کمی کاملترش کنم، مثلا وقتی کاربر روی یک دکمه مثلا Button1 کلیک کرد، میخواهیم کاری کنیم که متن داخل textBox1 به رکورد دیگری برود. برای این منظور در رویداد فشرده شدن دکمه Button1 کد زیر رو مینویسیم:


textBox1.DataBindings(0).BindingManagerBase.Positi on = number

number شماره رکوردی است که باید مقدار فیلد fieldName آن در textBox1 نمایش داده شود.
(راستش کدهای بالا رو توی سی شارپ امتحان کردم، اما نمیدونم به زبان بیسیک درست نوشتمش یا نه؟!)

programmermp
سه شنبه 01 اسفند 1385, 13:38 عصر
سلام نگاه کن کد های زیر رو من اینطوری استفاده می کنم و جواب هم داده



Dim strcon, strsql As String
Dim ds As New DataSet
Dim da As SqlClient.SqlDataAdapter
Dim con As SqlClient.SqlConnection
Dim cb As SqlClient.SqlCommandBuilder
Dim newrow As DataRow
----------------------------------------------------
strcon = "Data Source=.;Initial Catalog=mp;Integrated Security=True"
strsql = "Select * From phone order by family"
con = New SqlClient.SqlConnection(strcon)
con.Open()
da = New SqlClient.SqlDataAdapter(strsql, con)
da.Fill(ds, "phone")
txtName.DataBindings.Add(New Binding("Text", ds, "phone.name"))
con.Close()



توی قسمت اول برای دیتاست و دیتا اداپتر و کانکشن متغیر تعریف کردم

و از این ها به صورت ابزار موجود در تولبار استفاده نکردم

ببین اینطوری مشکلت حل می شه یا نه

bidad
سه شنبه 01 اسفند 1385, 15:33 عصر
فکر کنک جواب آقای progamerبرات کافی باشه!

m_zamani
شنبه 05 اسفند 1385, 11:14 صبح
Private Sub Code_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Codo.SelectedIndexChanged
con.Close()
con.Open()
na = Codo.SelectedItem
ds.Clear()
namo.DataBindings.Clear()
strsql = "Select * From enter where code=" & na
da = New SqlClient.SqlDataAdapter(strsql, con)
da.Fill(ds, "enter")
namo.DataBindings.Add(New Binding("Text", ds, "enter.name"))
con.Close()
End Sub

m_zamani
شنبه 05 اسفند 1385, 11:19 صبح
ببینید من این کد رو که میگذارم فقط یکی از رکوردهای جدول رو بایند میکنه به دو تا فیلد
و وقتی آیتمهای کومبو باکس رو عوض می کنم هیچ کاری نمیکنه