<b> Men hur får jag tabellen till en row?</b> Men vilken rad vill du returnera??? <b>Koden nedan använder jag för att läsa data ur en databas. Det som returneras är en datarow Jag vill ha en datarow av min tabell. Exakt lika bra som min databas inläsning. Skapa en egen DataRow
Hur skapar jag manuellt en tabell i en DataRow?
Addera poster, tabort etc. Sv: Skapa en egen DataRow
Tror mig förstå att man måste ha en tabell först. Men hur får jag tabellen till en row?
<code>
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.IO
Partial Class _Default
Inherits System.Web.UI.Page
Private ds As DataSet
Private dt As DataTable
Private dr As DataRow
Private crow As DataRow
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
ds = New DataSet
dt = New DataTable("minTabell")
With dt.Columns
.Add("Nr", GetType(Integer))
.Add("Namn", GetType(String))
.Add("Adress", GetType(String))
.Add("Ort", GetType(String))
End With
ds.Tables.Add(dt)
dr = dt.NewRow
dr("Nr") = "1"
dr("Namn") = "Namn1"
dr("Adress") = "Adress1"
dr("Ort") = "Ort1"
dt.Rows.Add(dr)
dr = dt.NewRow
dr("Nr") = "2"
dr("Namn") = "Namn2"
dr("Adress") = "Adress2"
dr("Ort") = "Ort2"
dt.Rows.Add(dr)
crow = dt.Select(Nothing, Nothing, DataViewRowState.CurrentRows) ???
label1.text = crow(0,1).tostring ' Skall ge "Namn1"
End Sub
End Class
</code>Sv:Skapa en egen DataRow
Du kan aldrig omvandla en tabell till en rad, en tabell innehåller rader.Sv: Skapa en egen DataRow
Koden nedan använder jag för att läsa data ur en databas. Det som returneras är en datarow
Jag vill göra lika fast med min egen skapade tabell.
<code>
objCmd.Fill(ds, dbTable)
Dim dTable As DataTable = ds.Tables(dbTable)
Return dTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows)
</code>Sv:Skapa en egen DataRow
I din kod har du skapat två stycken datarows med koden
dr = dt.NewRow
dr("Nr") = "1"
dr("Namn") = "Namn1"
dr("Adress") = "Adress1"
dr("Ort") = "Ort1"
dt.Rows.Add(dr)
dr = dt.NewRow
dr("Nr") = "2"
dr("Namn") = "Namn2"
dr("Adress") = "Adress2"
dr("Ort") = "Ort2"
dt.Rows.Add(dr)
Vill du returnera den första raden får du ta ut den med koden
crow = dt.Tables("mintabell").Rows(0)
vill du har den andra får du skriva
crow = dt.Tables("mintabell").Rows(1)
Du kan inte returnera två datarows i en enda datarow...
Jag tror att du måste läsa lite vad en datatable och en datarow verkligen är och sedan ta itu med problemet.Sv:Skapa en egen DataRow
Jag vill göra lika fast med min egen skapade tabell.</b>
Du menar alltså:
<code>
objCmd.Fill(ds, dbTable)
Return ds.Tables(dbTable)
</code>
Då returnerar du en tabell istället för en array av rader som du gör i ditt exempel ovan.Sv: Skapa en egen DataRow
Det går bra om tabellen kommer från databasen. Men inte om jag har gjort den manuellt med kod.Sv:Skapa en egen DataRow
<b>Jag vill ha en datarow av min tabell. Exakt lika bra som min databas inläsning. </b>
med det du har skrivit i koden ovan
<code>
crow = dt.Select(Nothing, Nothing, DataViewRowState.CurrentRows) ???
</code>
så kommer det ju inte fungera eftersom Select retunerar en array av rader, kompilerar du exemplet så ser du ju felmeddelandet och det står dessutom i hjälpen för Select vad den returnerar. Vill du får ut värdet i första raden och andra kolumnen så fungerar ju
<code>
dt.Rows(0).Item(1).ToString()
</code>
du kan även sätta rätt saker så att din kod fungerar
<code>
Private crow() As DataRow
crow = dt.Select(Nothing, Nothing, DataViewRowState.CurrentRows) '??
label1.text = crow(0).Item(1).ToString ' Skall ge "Namn1"
</code>
Båda exemplen ger "namn1" som resultat.