PDA

View Full Version : مبتدی: نمایش اطلاعات در دیتا گرید ویو بدون ثبت شد در بانک



نسرین2000
چهارشنبه 27 آذر 1392, 08:07 صبح
سلام
باز هم یه سوال دیگه :لبخند:
دوستان من اگه بخوام اطلاعات موجود در تکست باکس هام رو اول در یک دیتا گرید نمایش بدم ( بدون اینکه اونها رو در بانک ثبت کنم ) و سپس با زدن یک دکمه دیگر اونها رو در بانک ثبت کنم میشه ؟:متفکر:

boveiryghasem
چهارشنبه 27 آذر 1392, 08:24 صبح
سلام
آره میشه اینم کدشه:

Imports System.Data.SqlClient
Public Class Form1
Public arr As New ArrayList
Public CNNS As String = "Data Source=.;Initial Catalog=Test;Integrated Security=True"
Public cmd As New SqlCommand
Public cnn As New SqlConnection
Public i As Integer


Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
DataGridView1.Columns.Add("Name", "Name")
DataGridView1.Rows.Add()
DataGridView1.Item(0, 0).Value = TextBox1.Text
DataGridView1.Item(0, 1).Value = TextBox2.Text
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim i As Integer
Try
cnn.ConnectionString = CNNS

For i = 0 To DataGridView1.RowCount - 2
arr.Clear()

If DataGridView1.Item(0, i).Value = Nothing Then
arr.Add("NULL")
Else
arr.Add(DataGridView1.Item(0, i).Value)
End If

If DataGridView1.Item(0, i).Value = Nothing Then
arr.Add("NULL")
Else
arr.Add(DataGridView1.Item(1, i).Value)
End If

cmd.CommandText = "insert into Person(FName,LName) values(@G0,@G1)"
cmd.Parameters.Clear()
cmd.Parameters.Add("@G0", SqlDbType.NVarChar).Value = arr(0).ToString()
cmd.Parameters.Add("@G1", SqlDbType.NVarChar).Value = arr(1).ToString()

cmd.Connection = cnn
cnn.Open()
cmd.ExecuteNonQuery()
cnn.Close()
Next i
MsgBox("اطلاعات با موفقیت ثبت شد", MsgBoxStyle.Information, "پیغام برای کاربر")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class

نسرین2000
یک شنبه 01 دی 1392, 08:31 صبح
لطفا در مورد کدها یه مقدار توضیح بدید .
چرا دو تا button تعریف کردید ؟

boveiryghasem
یک شنبه 01 دی 1392, 13:53 عصر
فرقی نمیکرد بخاطر این از دوتا Button استفاده کردم چون خودتون گفتید اول توی TextBox نمایش داده بشه بعد با زدن Button دیگه توی دیتابیس ثبت بشه.
اول از همه باید متغیرهایی رو تعریف کردم که نیاز برنامه برای اتصال به SQL هستش مثل cnn که از نوع
SqlConnection هست بعد در رویداد کلیک
Button6 اطلاعات textbox ها رو به
DataGridView انتقال دادم و در Button بعدی با استفاده از آرایه arr که از نوع ArrayList هستش (این نوع
اندازه متغیر دارد ) اطلاعات دیتاگرید رو توی یک حلقه که به تعداد سطرهای دیتاگرید هستش دونه دونه میخونه و بعد با متصل شدن به SQL اطلاعات رو توی جدولی که توی Qury بهش گفتم میزه.
البته ریز این دستورات که باید چکار میکنه رو داخل لینک زیر کامل توضیح دادن دوستان ولی بازم اگر جایی سوال بود در خدمتم.

http://barnamenevis.org/showthread.php?133060-ADO.NET-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA

نسرین2000
سه شنبه 03 دی 1392, 08:25 صبح
مچکرم از راهنماییت ، با این کد مشکلم حل شد .
فقط دو جا اشتباه تایپی داری
اول اینکه تعداد دفعات حلقه باید For i = 0 To DataGridView1.RowCount - 1 باشه نه 2 ، این طوری یک سطر از اطلاعاتمون ثبت نمی شه .
دوم اینکه تو این قسمت از کد If DataGridView1.Item(0, i).Value = Nothing Then
arr.Add("NULL")
Else
arr.Add(DataGridView1.Item(1, i).Value)
End If باید تو شرط if بنویسیم (i,1) درسته ؟
به هر حال کمک بزرگی بود
مچکرم

نسرین2000
سه شنبه 03 دی 1392, 10:16 صبح
یه سوال دیگه :
با این کد اگه توی تکس باکس چیزی ننویسیم تو بانک اطلاعاتی عبارت null رو می نویسه ولی من می خوام چیزی ننویسه و خالی باشه .
کد رو به صورت arr.add(" ") هم تغییر دادم ولی باز هم nullمی نویسه .

Naghibi
سه شنبه 03 دی 1392, 11:10 صبح
arr.add(DataGridView1.Item(0, i).Value.ToString())

نسرین2000
سه شنبه 03 دی 1392, 12:02 عصر
متوجه نشدم ؟

sagggad
سه شنبه 03 دی 1392, 13:29 عصر
فکر کنم دوستمون میخواست کد زیر روبنویسه:

arr.add(DataGridView1.Item(0, i).Value="".ToString())

Naghibi
سه شنبه 03 دی 1392, 14:14 عصر
فکر کنم دوستمون میخواست کد زیر روبنویسه:

arr.add(DataGridView1.Item(0, i).Value="".ToString())

:متعجب::متعجب: هم انتساب هم tostring !!!! نه من اصلا یه همچین چیزی رو نمیخواستم بنویسم.

وقتی مقدار DataGridView1.Item(0, i).Value برابر با nothing باشه می تونین با گذاشتن .ToString در آخر عبارت، مقدار رشته ای NULL یعنی '' رو برگردونید. به جای
arr.Add("NULL") دستور
arr.add(DataGridView1.Item(0, i).Value.ToString()) رو بنویسید.

sagggad
سه شنبه 03 دی 1392, 14:26 عصر
خوب این کد که فیلد رو خالی نمیکنه؟؟:متعجب:

boveiryghasem
سه شنبه 03 دی 1392, 14:42 عصر
مچکرم از راهنماییت ، با این کد مشکلم حل شد .
فقط دو جا اشتباه تایپی داری
اول اینکه تعداد دفعات حلقه باید For i = 0 To DataGridView1.RowCount - 1 باشه نه 2 ، این طوری یک سطر از اطلاعاتمون ثبت نمی شه .
دوم اینکه تو این قسمت از کد If DataGridView1.Item(0, i).Value = Nothing Then
arr.Add("NULL")
Else
arr.Add(DataGridView1.Item(1, i).Value)
End If باید تو شرط if بنویسیم (i,1) درسته ؟
به هر حال کمک بزرگی بود
مچکرم

سلام
اولی رو که گفتید -2 گذاشته بودم واسه اینکه برنامه ای که داشتم نیاز بود این کار رو بکنم ولی دومی رو آره شما درست میگید اشتباه تایپی بوده ممنون که گفتین.