 |
|
สอบถามปัญหา vb.net 2005 การ insert array สองมิติ ครับ |
|
 |
|
|
 |
 |
|
ผมมีปัญหาในการ insert array 2มิติ ครับ ลอง magbox ดูว่ามัน insert ข้อมูลได้อะไร
ปรากฎว่ามัน insert array ทั้งหมด แล้วก็ตามด้วยรหัสตัวที่ผมจะเอาใส่ไปอีก column
ผมเลยไปไม่เป็นเลยทีนี้ ไม่รู้ว่าจะเอา ตัวแปรไหน -*-
ช่วยแนะนำด้วยครับ ขอบคุณล่วงหน้าครับผม 


Code (VB.NET)
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim colunSum As Integer = Ds.Tables("Graduate").Rows.Count
Dim tmpMaxSeat As String = colunSum
lblMaxSeat.Text = txtRow.Text * txtColumn.Text
If (txtRow.Text = "0") Or (txtColumn.Text = "0") Then
MessageBox.Show("กรุณาป้อนข้อมูลให้ครบ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txtRow.Text = "0"
txtColumn.Text = "0"
txtRow.Focus()
Exit Sub
End If
If txtColumn.Text > 110 Then
MessageBox.Show("จำนวน แถวตอนลึกมากเกินไป กรุณากรอกใหม่", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txtColumn.Focus()
Exit Sub
End If
Dim Row As Integer = txtRow.Text
Dim Column As Integer = txtColumn.Text
Dim sum As String = ""
Dim j As Integer
Dim Array1(110) As String
Dim colunSum As Integer = Ds.Tables("Graduate").Rows.Count
Dim tmpMaxSeat As String = colunSum
lblMaxSeat.Text = txtRow.Text * txtColumn.Text
If (txtRow.Text = "0") Or (txtColumn.Text = "0") Then
MessageBox.Show("กรุณาป้อนข้อมูลให้ครบ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txtRow.Text = "0"
txtColumn.Text = "0"
txtRow.Focus()
Exit Sub
End If
If txtColumn.Text > 110 Then
MessageBox.Show("จำนวน แถวตอนลึกมากเกินไป กรุณากรอกใหม่", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
txtColumn.Focus()
Exit Sub
End If
Dim Row As Integer = txtRow.Text
Dim Column As Integer = txtColumn.Text
Dim sum As String = ""
Dim j As Integer
Dim Array1(110) As String
Array1(1) = "A"
Array1(2) = "B"
Array1(3) = "C"
'....................
'.............
Array1(18) = "AH"
Array1(19) = "AI"
Array1(20) = "AJ"
'....................
'.............
Array1(108) = "JH"
Array1(109) = "JI"
Array1(110) = "JJ"
For Column = 1 To Column
For j = 1 To Row
sum += Array1(Column) & j & " "
Next j
sum += vbCrLf 'ขึ้นแถวใหม่เมื่อสิ้นสุดแต่ละบรรทัด
Next Column
tmpSum = CStr(sum)
btnAdd.Enabled = False
btnSave.Enabled = True
btnCancle.Enabled = True
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim sqlAdd As String = ""
Dim ComAdd As New SqlCommand
Dim i As Integer = 0
For i = 0 To lsvGraduate.Items.Count - 1
sqlAdd = "INSERT INTO Seat(SeatID,GdtID)" 'RowName
sqlAdd &= "VALUES ('" & tmpSum & "',"
sqlAdd &= "'" & Val(lsvGraduate.Items(i).SubItems(0).Text) & "')"
MsgBox(sqlAdd)
With ComAdd
.CommandType = CommandType.Text
.CommandText = sqlAdd
.Connection = Conn
.ExecuteNonQuery()
End With
Next i
MessageBox.Show("บันทึกบัณฑิตขาดซ้อม เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
btnAdd.Enabled = True
btnEdit.Enabled = True
btnSave.Enabled = False
btnCancle.Enabled = False
End Sub
Tag : .NET, MySQL, VB.NET, VS 2005 (.NET 2.x)
|
ประวัติการแก้ไข 2010-09-11 15:20:58
|
 |
 |
 |
 |
Date :
2010-09-11 15:18:03 |
By :
AoFzaIT |
View :
3392 |
Reply :
6 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Error นี้เกิดจากฟิวด์ที่ Insert ไม่พอดีกับขนาดของ Data ครับ
|
 |
 |
 |
 |
Date :
2010-09-11 15:55:04 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันเหมือนจะ insert แถวที่นั่งทั้งหมดที่คำนวนมาอ่าครับ
เช่น
A คือแถวที่ Aมี 5 ที่นั่ง
B คือแถวที่ Bมี 5 ที่นั่ง
,,,,,,,,,,,
,,,,,,
และตามด้วยรหัส บัณฑิต คนที่ 1
(มันไป insert แถวที่นั่งทั้งหมดก่อนที่จะไป insert รหัสบัณฑิตไล่มาตามลำดับที่เรียงไว้ใน datagridview)
471940321 คือรหัสบัณฑิตคนที่ 1 ครับ 
|
ประวัติการแก้ไข 2010-09-11 16:03:50
 |
 |
 |
 |
Date :
2010-09-11 16:02:35 |
By :
AoFzaIT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่อ เหมือนจะต้องใช้ for ครับ 
เพราะ่ว่าต้อง insert บัณฑิตแต่ละคนลงไป พร้อมกับที่นั่ง
แต่ว่า ...... จะเอา ตัวแปร array ตัวไหนลงงะ
ช่วยชี้แนะทีครับ แหะๆ
|
 |
 |
 |
 |
Date :
2010-09-11 16:10:45 |
By :
AoFzaIT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอ่อ โทษทีครับ ทำยากไปไม๊อ่ะครับ ระบบนี้ประมาณว่าเป็นระบบจองที่นั่งรับปริญญาป่ะครับ (มันไม่น่าจะจองได้นะ น่าจะเป็นจัดสรรมากว่า) ไม่รู้นะผิดก็โทษที :P
ผมว่าเอา array ไปใช้ตอนแสดงผลก็พอครับ ถ้าอยากใช้อ่ะนะ
ส่วนเวลาเลือกว่าใครนั่งตรงไหนก็ใช้ตัวแปรธรรมดานี่แหละ วนลูปเอา อย่างในรูป คือเอา แถวxลึก ใช่ป่ะครับ ก็กำหนดลูปได้และว่าต้องมี 25 ลูป ก็ for เ้้ข้าไปเลย ว่าตัวแปร seat_id = 01... ไปเรื่อยๆ
sql command เวลา insert ก็ส่งไปแค่ ตัวแปร seat_id พอจะมองออกป่ะครับ
Code (VB.NET)
nrow = textboxแถว
ncol = textboxลึก
nSeatTotal = nrow*ncol
for seat_id = 1 to nSeatTotal
sqlAdd = "INSERT INTO Seat(SeatID,GdtID)" 'RowName
sqlAdd &= "VALUES ('" & tmpSum & "',"
sqlAdd &= "'" & Val(seat_id) & "')"
MsgBox(sqlAdd)
With ComAdd
.CommandType = CommandType.Text
.CommandText = sqlAdd
.Connection = Conn
.ExecuteNonQuery()
End With
next
|
 |
 |
 |
 |
Date :
2010-09-12 11:49:04 |
By :
salapao_codeman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณท่าน Codeman ที่ชี้แนะครับ แต่.....
แง่ม ๆ ๆ มันไม่ใช่แ่ค่ที่นั้นอ่าคับ -*-
คือผมกำหนดไปว่า แถวที่
a = 1
b= 2
c=3
. . . . . .
f =10
แปลว่าถ้าเราใส่เลข 10 เข้าไปแล้ว ตัวบอกแถวก็จะบอกว่าแถวที่ f
จะเอาตัวอักษรใส่ไปด้วยครับ
ประมาณนี้ อุดส่าห์ทำ array มาเสียดาย 555+
ช่วยชี้แนะอีกทีนะครับ แหะๆๆ 
ถ้าไม่ได้ยังไงก็คงต้อทำแบบที่ท่าน Codeman บอกและมั้งเนี่ยยย ง่ายดี
(ทำให้มันถึงที่สุดก่อนอ่าคับ (เรื่องมากอีกแล้ว 555+))
|
ประวัติการแก้ไข 2010-09-12 16:42:05
 |
 |
 |
 |
Date :
2010-09-12 16:31:06 |
By :
AoFzaIT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมกำหนดให้มันเอาตัวอักษรไปได้แล้วครับ
คือเอาไปใส่ใน module แล้วส่งผ่านไปยังปุ่ม save
แต่ตัวเลขมันไม่ยอมไป -*-
ผู้รู้ช่วยแนะนำทีครับ ขอบคุณล่วงหน้าครับ 
Code (VB.NET)
For Column = 1 To Column
For j = 1 To Row
sum += Array1(Column) & j & " "
Next j
sum += vbCrLf 'ขึ้นแถวใหม่เมื่อสิ้นสุดแต่ละบรรทัด
Next Column
tmpArray = (Array1(Column - 1))
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim sqlAdd As String = ""
Dim ComAdd As New SqlCommand
Dim i As Integer = 0
MsgBox(tmpArray)
Dim row As Integer
For row = 1 To txtRow.Text
For i = 0 To lsvGraduate.Items.Count - 1
sqlAdd = "INSERT INTO Seat(SeatID,GdtID)" 'RowName
sqlAdd &= "VALUES ('" & Val(tmpArray) & row & "',"
sqlAdd &= "'" & Val(lsvGraduate.Items(i).SubItems(0).Text) & "')"
MsgBox(sqlAdd)
' With ComAdd
'.CommandType = CommandType.Text
' .CommandText = sqlAdd
'.Connection = Conn
'.ExecuteNonQuery()
'End With
Next i
Next row
End Sub
|
 |
 |
 |
 |
Date :
2010-09-12 19:44:44 |
By :
AoFzaIT |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|