Jag var nog lite otydlig precis som Pelle skrev, så här kommer ett uppdaterat inlägg. Du kanske får null i retur på id och då fungerar det inte. Anledningen till att ingen svarar beror troligen på bristande material från dig. Man behöver se födelsen och givetvis vad som händer i din funktion för att kunna göra en bra gissning. Ok... jag är ledsen för att jag var otydlig.. men har fyllt på mitt inlägg med koden för datasetet nu. Flytta databasanropet till comboboxen så går det nog bättre.(Uppdaterad) Problem med att hämta id från dataset.
Jag har gjort ett dataset med hämtning av data från en databas, den fungerar bra. Nu har jag satt värdet id från en tabell som value på en combobox:
tempform.cmbcustomers.ValueMember = "id"
Nu vill jag när boxen ändras så ska det id:et skrivas ut i en textbox och försöker skriva ut id:et i
"Private Sub cmbcustomers_SelectedIndexChanged"
med:
Dim id As String
id = tempform.cmbcustomers.SelectedValue()
tempform.customerid.AppendText(id)
Men... får detta felmeddelande:
Additional information: Cast from type 'DataRowView' to type 'String' is not valid.
på denna rad:
id = tempform.cmbcustomers.SelectedValue()
Jag har även testat att lägga utskriften till txtboxen (customerid) direkt efter datasetet i form load. Då får jag upp första id:t i txtboxen, men den uppdateras givetvis inte när jag väljer en ny post i cmbboxen. Så felet kanske ligger i att vaulet inte finns kvar när jag kör utskriften i cmbcustomers_SelectedIndexChanged..
Här kommer hela koden, form load med datasetet och själva utskriften till textboxen:
----------------------------------------------------------------------
Public Shared myinstance As Form
Dim tempform As Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
myinstance = Me
Dim dbcon As New dbcon()
Dim mycon As OdbcConnection = dbcon.returnmycon()
Dim tempform As Form1
tempform = Form1.myinstance
mycon.Open()
Dim mydataadapter As New OdbcDataAdapter()
Dim mydataset As New DataSet()
Dim sql As String = "select * from tblcustomer"
mydataadapter = New OdbcDataAdapter(sql, mycon)
mydataadapter.Fill(mydataset, "tblcustomer")
tempform.cmbcustomers.DataSource = mydataset.Tables("tblcustomer")
tempform.cmbcustomers.DisplayMember = "firstname"
tempform.cmbcustomers.ValueMember = "id"
End Sub
Private Sub cmbcustomers_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbcustomers.SelectedIndexChanged
tempform = Form1.myinstance
tempform.customerid.Clear()
Dim id As String
id = tempform.cmbcustomers.SelectedValue
tempform.customerid.AppendText(id)
End Sub
-------------------------------------------------------------------------------
Jag har även testat att deklarera som integer men det fungerade inte heller.
Så vad gör jag för fel? Måste jag hämta id:t på annat sätt..?
Tacksam för svar så jag kan komma vidare..
//Per-Henrik LindSv: Problem med att hämta id från dataset.
Sv: Problem med att hämta id från dataset.
Det enda som inte finns med är databaskopplingen som jag redan vet fungerar.Sv: Problem med att hämta id från dataset.
Glöm inte att stänga ner connection efteråt, det var inte gjort i Form.load