Har börjat lära mig lite om VB.net, men har stött på problem med att hämta data från min accessdatabas. Det som är fel är att du tilldelar variablen resultatet av funktionen.. Okej. Den uppenbara följdfrågan blir då hur jag stoppar in grejerna från databasen i variabeln... Du borde kunna göra något liknande:Presentera data från databas
Följande rader skriver ut rätt värde (Chicago) från databasen i min label:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DsCities1.Clear()
OleDbDataAdapter1.Fill(DsCities1)
End Sub
Dock vill jag först läsa in värdet till en variabel för att sedan skriva ut det i label2, men det går inte. Då skriver den ut siffran 3 varje gång, oavsett vad det står i databasen.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DsCities1.Clear()
Dim strEtt As String
strEtt = OleDbDataAdapter1.Fill(DsCities1)
Me.Label2.Text = strEtt
End Sub
Vad gör jag fel?
/PeterSv: Presentera data från databas
strEtt = OleDbDataAdapter1.Fill(DsCities1)
låter lagom kryptiskt men det som lagras i din variabel är antalet rader som ditt dataset innehåller.Sv:Presentera data från databas
Sv: Presentera data från databas
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DsCities1.Clear()
Dim strEtt As String
OleDbDataAdapter1.Fill(DsCities1)
strEtt = DsCities.Tables(0).Rows(0).Item(0) 'Hämtar första raden och första fältet
Me.Label2.Text = strEtt
End Sub
Notera att indexeringen i "DsCities.Tables(0).Rows(0).Item(0)" dvs 0:orna lika gärna skulle kunna vara namnen på tabellen och på fältet, raderna är dock inte namngivna ;)
Ett exempel på hur man kan loopa igenom ett helt dataset:
Dim ds As New DataSet
Dim da As New OleDb.OleDbDataAdapter("select * from tbl1", _
New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb"))
Dim dsr As Data.DataRow
da.Fill(ds)
Label1.Text = ""
For Each dsr In ds.Tables(0).Rows
Label1.Text += dsr.Item(1) & vbCrLf 'Lägger till andra kolumnens innhåll i en label
Next
Har du tänkt att enbart läsa data så skulle jag rekommendera att istället använda en datareader, exempel på det skulle kunna se ut som följer:
Dim dr As OleDb.OleDbDataReader
Dim con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb")
Dim cmd As New OleDb.OleDbCommand("select * from tbl1", con)
con.Open()
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Do While dr.Read
Label1.Text += dr.Item(0).ToString & vbCrLf
Loop