PDA

View Full Version : مقید کردن دیتا ریدر به یک آرایه



marzban
چهارشنبه 23 خرداد 1386, 15:24 عصر
با سلام
من قسد دارم که یک دیتاریدر را به یک آرایه مقد کنم.کدش رو هم تو پایین آوردم ببینین ایرادش چیه!

کد
dtr.Read
For i = LBound(str_insert_field) To UBound(str_insert_field)
str_return(i) = dtr(str_insert_field(i)).ToString
Next


str_insert_field یک آرایه هست که اسامی فیلدها را داره
str_return یک آرایه هست که خروجی دیتا ریدر را بهمراه داره
فقط هم اطلاعات یک رکورد را می خوام بریزم داخل str_return.
اگه مشکلی میبینید لطفا راهنمایی کنید.
با تشکر مرزبان

marzban
چهارشنبه 23 خرداد 1386, 15:26 عصر
خطایی هم که بعد از اجرا نشون میده تو پایین گذاشتم.
Object reference not set to an instance of an object.

Behrouz_Rad
چهارشنبه 23 خرداد 1386, 19:59 عصر
برای اینکه بتونی در یک DataReader حرکت کنی، باید متد Read اون رو در یک حلقه ی تکرار قرار بدی!:


Do While myDataReader.Read
'Do Anything
Loop

معنای دستوری که نوشتی اینه:
تا زمانی که به حد بالای آرایه نرسیدی، ستون DataReader معادل اندیس حد آرایه رو برگشت بده!!!

موفق باشید.

marzban
چهارشنبه 23 خرداد 1386, 22:21 عصر
با تشکر از اینکه while را یادآوری کردید
ولی باز هم مشکل من حل نشده.
من قبلا از while هم استفاده کردم ولی جواب نداد

marzban
چهارشنبه 23 خرداد 1386, 22:23 عصر
اگه مقدار را داخل یک رشته بریزم مشکلی نیست.
این مشکل زمانی پیش می آید که از آرایه ای از رشته ها استفاده می کنم.
اگر لطف بفرمایید و قطعه کدی در اختیار من قرار دهید ممنون می شوم

Behrouz_Rad
پنج شنبه 24 خرداد 1386, 00:00 صبح
بهتر بود کد کامل رو قرار میدادی...
من فکر می کنم در زمان تعریف آرایه، طول اون رو مشخص نکردی!
برای درک بهتر موضوع، به نمونه کدی که در ذیل نوشتم دقت کن...


Dim arr_Return() As String
'Fill Data Reader Here
myDataReader.Read()
Dim int_num_fields As Int32 = myDataReader.FieldCount
ReDim arr_Return(int_num_fields - 1)
For i As Int32 = 0 To myDataReader.FieldCount - 1
arr_Return(i) = myDataReader(i)
Next


موفق باشید.

marzban
پنج شنبه 24 خرداد 1386, 00:30 صبح
با تشکر از اینه زحمت کشیدید و قطعه کدی را گذاشتید.
کد


Function bind_to_box(ByVal table_name As String, ByVal str_insert_field() As String, ByVal record_code As String, ByVal field_key As String) As String()

Dim dtr As OleDb.OleDbDataReader
Dim con As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
con.ConnectionString = myconn
con.Open
Dim i As Integer
Dim str_select As String = ""
For i = LBound(str_insert_field) To UBound(str_insert_field)
If i <> UBound(str_insert_field) Then
str_select += str_insert_field(i) + ","
Else
str_select += str_insert_field(i)
End If
Next
cmd.CommandText = "select " + str_select + " from " + table_name + " where " + field_key + "=" + record_code
cmd.CommandType = CommandType.Text
cmd.Connection = con
Dim counter_find_article As Integer = 0
dtr = cmd.ExecuteReader
i = 0
Dim str_return() As String
While dtr.Read()
For i = LBound(str_insert_field) To UBound(str_insert_field)
str_return(i) = dtr(str_insert_field(i)).ToString()
Next
End While
dtr.Close()
con.Close
Return str_return
End Function

Behrouz_Rad
پنج شنبه 24 خرداد 1386, 00:34 صبح
پس حدسم درست بود...
بر طبق کدی که گذاشتم عمل کن.

لطفا از این بعد کدهات رو در بین تگ [code] قرار بده.

موفق باشید.