PDA

View Full Version : مبتدی: وارد کردن اطلاعات در دیتا بیس و نمایش آن در datagridview به طور همزمان



neda88
یک شنبه 29 آبان 1390, 13:51 عصر
سلام
من میخوام وقتی کاربر اطلاعاتو از طریق برنامه وارد میکنه (insert command) همزمان هم در دیتا بیس (sql server 2005) وارد بشه و هم در data grid view نشون بده.
Imports System.Data.SqlClient
Public Class Form3
Dim constr As String
Dim con As New SqlConnection
Private Sub connection()

constr = "Data Source=.;Initial Catalog=doryaban;Integrated Security=True"
con = New SqlConnection(constr)
con.Open()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call connection()
Dim strsql, str As String
Dim name As String = TextBox1.Text
Dim code As Integer = TextBox2.Text
strsql = "insert into merchandise values('" & name & "'," & code & ")"

Dim cmd As New SqlCommand(strsql, con)
cmd.ExecuteNonQuery()
Dim da As New SqlDataAdapter(strsql, con)
Dim ds As New DataSet
da.Fill(ds, "merchandise")
DataGridView1.DataBindings.Add(New Binding("'name '", ds, " 'merchandise.name '"))
DataGridView1.DataBindings.Add(New Binding("code", ds, "merchandise.code"))

DataGridView1.DataBindings.Clear()

con.Close()
End Sub
زمان اجرا از data grid view اولی ایراد میگیره :Cannot bind to the property ''name '' on the target control. Parameter name: PropertyName
اسم جدولم در merchandise
اسم ستون هاش: name و code

sadeghlinux
یک شنبه 29 آبان 1390, 15:34 عصر
سلام یه نمونه برات نوشتم( با VB.NET 2010) که میتونی ازش استفاده کنی از لینک زیر دانلود کن

دانلود (http://up.iranblog.com/images/9hs3hnki8ugg8iulf.rar)

من SQL 2005 نداشتم و با 2008 اینکارو کردم

اما تفاوتی نداره

چون دقیقا اون چیزی که میخوای هس

موفق باشی

Rohollaes
یک شنبه 29 آبان 1390, 15:46 عصر
بعد از اینکه اطلاعات رو در دیتابیس ذخیره کردی gridview رو باید bind کنی به صورت زیر:
gridview1.databind();

M.KH-SH
یک شنبه 29 آبان 1390, 15:46 عصر
دوست عزیز شما به راحتی میتونی بانک رو یک بار دیگه فراخوانی کنی و به راحتی این کار انجام میشه
همیشه دیتاگریدویو ها از دیتاست پر میشن و دیتاست هم هیچ گاه خودکار کاری رو انجام نمیده پس باید بهش بگی بروز شو ، حالا بروز شدن دیتاست با فراخوانی بانک و تیبل مورد نظر انجام میگیره

neda88
یک شنبه 29 آبان 1390, 15:58 عصر
الان اطلاعات همزمان تو جفتش وارد میشه فقط مشکل اینجاس وقتی دوباره چیزی وارد میکنم اصلاعات قبلی دیتا گرید ویو پاک میشه.
جدیده میره جای قبلی.
اما میخوام اضافه بشه به دیتا گرید ویو.
sadeghlinux:
فایلو دانلود کردم اما پیچیده بود.ویژوال اسودیو هم ارور میداد .

M.KH-SH
یک شنبه 29 آبان 1390, 17:06 عصر
دوست عزیز باید شما باید کاملا برنامه نویسی رو روی دیتاست ببری و گرنه باز همین مشکل رو داری

به فرض

load_bank()' بانک فراخوانی میشود
DataGridView1.DataBindings.Clear
DataGridView1.DataBindings.add(new binding("datasource",ds,"tb_name"))

حالا کد بالا رو همونطور که گفتم فکر کن فراخوانی بانک هست
حالا شما مییای ایتم x رو از بانک فراخوانی میکنی و روی اون ویرایش انجام میدی بعد از ویرایش دوباره بانک رو فراخوانی کن.

neda88
یک شنبه 29 آبان 1390, 20:05 عصر
کلاً منظورتونو از فراخوانی بانک متوجه نمیشم.
از خط اول و سوم ایراد میگیره.کدی که تا الان نوشتم اینه
Call connection()
Dim strsql, str As String
Dim name As String = TextBox1.Text
Dim code As String = TextBox2.Text
strsql = "insert into merchandise values('" & name & "'," & code & ")"
Dim cmd As New SqlCommand(strsql, con)
cmd.ExecuteNonQuery()
str = "select * from merchandise where name='" & TextBox1.Text & " ' and code=" & TextBox2.Text & ""
Dim da As New SqlDataAdapter(str, con)
Dim ds As New DataTable
da.Fill(ds)
Me.DataGridView1.DataSource = ds
از دیتا تیبل استفاده کردم نه دیتاست.دیتا ست که میذاشتم اون مشکلی که تو پست اول اشاره کردم به وجود میاد.کلاً هیچ راه ساده تری وجود نداره برای اینکه بتونم همه اطلاعات جدولو تو دیتا گرید ویو ببنم؟(با توجه به کدی تا الان نوشتم)

M.KH-SH
یک شنبه 29 آبان 1390, 20:10 عصر
خط اول منظورت کجاست؟

کوئری برای افزودن به بانک رو به این صورت بنویس

insert into merchandise (name,code) values (@name,@code)

خوب حالا که ایتم افزوده شد به بانک راحت یک بار دیگه تمام اون جدول رو در دیتاگرید نمایش بده به هر روشی که بلدی (همون روشی که در اول نمایش دادی)

str = "select * from merchandise where name='" & TextBox1.Text & "' and code="'" & TextBox2.Text & "'"

کوئری فراخوانی هم مشکل داشت دقت داشته باش که هر فضای خالی در زمانی که where میگیری به حساب مییاد و دقت داشته باش که همیشه کارکتر ' رو وارد کنی

neda88
یک شنبه 29 آبان 1390, 20:27 عصر
دوست عزیز باید شما باید کاملا برنامه نویسی رو روی دیتاست ببری و گرنه باز همین مشکل رو داری

به فرض

load_bank()' بانک فراخوانی میشود
DataGridView1.DataBindings.Clear
DataGridView1.DataBindings.add(new binding("datasource",ds,"tb_name"))

حالا کد بالا رو همونطور که گفتم فکر کن فراخوانی بانک هست
حالا شما مییای ایتم x رو از بانک فراخوانی میکنی و روی اون ویرایش انجام میدی بعد از ویرایش دوباره بانک رو فراخوانی کن.

از خط اول و سوم این کد ایراد میگیره

M.KH-SH
یک شنبه 29 آبان 1390, 20:48 عصر
:D
خوب من که مثال زدم چرا اونو وارد کردی؟ :دی
دوست عزیزم اونا فقط مثال بود مثلا در برنامه من load_Bank یک تابع هست و ds متغیر دیتاست و در آخر نام جدول مورد نظرم

neda88
چهارشنبه 02 آذر 1390, 22:25 عصر
حالا میخوام کاربر بتونه اطلاعات وارد شده در دیتا گرید ویو رو آپدیت و حذف کنه.
یعنی از توی خود دیتاگرید ویو این کارو انجام بده.