Dim index As integer = 1
Dim index2 As integer = 1
-- วนลูปนะครับ --
Dim a As integer = Anumber(i) (เป็นค่าที่ดึงมาจาก Database เป็น Array)
Dim a2 As integer
if a = 1 Then
a2 = index
else
a2 = index2
End If
Tcode(a, a2) = dt.Rows(0)("TCodeID")
TPrice(a, a2) = dt.Rows(0)("TPrice")
if a == 1 Then
index++
else
index2++
End If
Dim index As integer = 1
Dim index2 As integer = 1
-- วนลูปนะครับ --
Dim a As integer = Anumber(i) (เป็นค่าที่ดึงมาจาก Database เป็น Array)
Dim a2 As integer
if a = 1 Then '(1) ต่างกันตรงไหนครับเมื่อ index กับ index2 มีค่าเท่ากับ 1 เหมือนกัน
a2 = index
else
a2 = index2
End If
Tcode(a, a2) = dt.Rows(0)("TCodeID")
TPrice(a, a2) = dt.Rows(0)("TPrice")
'(2) เออเร่อ Out of ... จะมาจากข้อผิดพลาดจำพวกอ้างตำแหน่งแล้วมันไม่มีอยู่จริง
'เช่น array มีขนาดความจุ 5 แต่เราอ้างที่ 1-5 ไม่ได้เพราะมันนับเริ่มที่ 0 (เรียกว่า index ตัวชี้ตำแหน่ง) เพราะฉะนั้นเราต้องอ้าง 0-4
'ให้ตรวจสอบตรงนี้ให้ดีครับ
if a == 1 Then
index++
else
index2++
End If
Public Class Form1
Dim objConn As New SqlConnection
Dim strConnString As String
Dim Arr As Integer
Dim Tcode(Arr) As String
Dim Tname(Arr) As String
Dim Tsub(Arr) As String
Dim Tprice(Arr) As String
Private Sub p_product()
Dim objCmd As SqlCommand
Dim strSQL As String
Dim dtAdapter As SqlDataAdapter
Dim dt As New DataTable
Dim i As Integer
Try
strSQL = "SELECT "
strSQL += "* "
strSQL += "FROM t_product"
dtAdapter = New SqlDataAdapter(strSQL, objConn)
dtAdapter.Fill(dt)
Arr = dt.Rows.Count
objCmd = New SqlCommand(strSQL, objConn)
Dim sqlReader As SqlDataReader = objCmd.ExecuteReader()
While sqlReader.Read()
Tcode(i) = sqlReader.Item(0)
Tname(i) = sqlReader.Item(1)
Tsub(i) = sqlReader.Item(2)
Tprice(i) = sqlReader.Item(3)
i += 1
End While
sqlReader.Close()
p_count()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
พอ Run มันจะเกิด Error ว่า Out of... อะไรสักอย่างครับ
Public Class Form1
Dim objConn As New SqlConnection
Dim strConnString As String
Public Function getProduct() as DataTable
Dim objCmd As SqlCommand
Dim strSQL As String
Dim dtAdapter As SqlDataAdapter
Dim dt As New DataTable
Try
strSQL = "SELECT "
strSQL &= "* "
strSQL &= "FROM t_product"
dtAdapter = New SqlDataAdapter(strSQL, objConn)
dtAdapter.Fill(dt)
return dt
Catch ex As Exception
throw ex
End Try
End Function
function process1(byval datarow_reference as datarow) as boolean
dim dr as datarow = datarow_reference
dim param1 as string
param1 = dr("ProductId")
..........
end function
ลองเอาโค๊ดบ้านๆของผมไปใช้ดูครับ
เริ่มจาก สร้าง class Product ขึ้นมาเพื่อสะดวกต่อการเก็บค่า Code (VB.NET)
'สร้าง class Product ขึ้นมาเพื่อสะดวกต่อการเก็บค่า
Public Class product
Public Tcode As String
Public Tname As String
Public Tsub As String
Public Tprice As String
End Class
โค้ดใน form1 ครับ
Code (VB.NET)
Imports System.Data.SqlClient
Public Class Form1
'function สร้าง list product
Private Function p_product() As List(Of product)
Dim lstpdt As List(Of product) = New List(Of product)()
Dim objConn As Data.SqlClient.SqlConnection = New SqlConnection()
Dim strSQL As String = "SELECT * FROM t_product"
Dim dtAdapter As SqlDataAdapter
Dim ds = New System.Data.DataSet()
dtAdapter = New SqlDataAdapter(strSQL, objConn)
dtAdapter.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
lstpdt = New List(Of product)(ds.Tables(0).Rows.Count - 1)
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
Dim pct As New product()
pct.Tcode = ds.Tables(0).Rows(i)(0)
pct.Tname = ds.Tables(0).Rows(i)(1)
pct.Tprice = ds.Tables(0).Rows(i)(2)
pct.Tsub = ds.Tables(0).Rows(i)(3)
lstpdt.Add(pct)
Next
End If
Return lstpdt
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'การเอาไปใช้งาน
Dim listProduct As List(Of product) = p_product()
MessageBox.Show(listProduct(2).Tcode) 'ประมาณนี้
End Sub
End Class