Hej, jag är nybörjare på vb.net, Visst, hjälper dig gärna. Visa bara den kod du har än så länge så korrigerar vi den sen :) sorry, förstår inte. Jag är helt ny på detta, försöker att lära mig. I vb6 var det lättare att göra kopplingarna och få det som man ville. så om du kan visa med kod och förklarande text, så är jag tacksam. Du hämtar namnen från databasen till en combobox. Det fungerar väl? I comboboxen kan du sätta både ett text-värde och ett value-värde. I comboboxen kan du väl sätta AutoPostBack="True"? I så fall gör du bara det. I din Page_Load sätter du Hans ger dig goda råd, men du bör inte använda dig av <b>Page.IsPostBack</b> i <b>Page_Load</b> för att avgöra om något valts i din combobox. Anledningen till detta är bla. att postback kan genereras av fler anledningar än av din combobox och du vill bara hämta informatiom om det är just din combobox som ändrats. men jag har en accessdatabas som jag är kopplad mot, och det jag vill är att när jag väljer i comboboxen så ska mina värden som tillhör visas i två textboxar, jag har gjort så här Det spelar ingen roll vilken databas du hämtar från, principen är densamma som ovan. Ta bort den ena textboxen bara eftersom du bara ville ha två. hur menar du, i comboboxen väljer det namn jag vill ha, i txtbox1 skrivs telnr och i txtbox2 skrivs mailadress, och det är så jag vill ha det, så var någonstans är det jag gör fel??? Nu ska vi se så jag har tungan rätt i mun jag har fattat så långt att jag gör en sub och sedan ska jag få den att visa sig när jag markerar namnet i comboboxen ska jag göra en if-sats eller något för att den ska visa enbart värdena då eller vad och isåfall var någonstans i koden gör jag detta, har provat olika sätt ett bra tag innan jag började fråga här.koppling databas vb.net
Om jag har en databas(vet hur den kopplas), och ska göra ett program som låter användaren har fått fram de önskade tex namn och så ska man klicka på det namnet och få fram tel och mailadress, jag har gjort ett par försök,men lyckas inte komma på hur, just detta att klicka på namnet och först då få fram de andra värdena,
jag kan blädra mellan mina värden med två knappar och visar mina värden i 3 textboxar, men om jag ska kunna välja ett namn och få fram två värden, försöker med att använda en combobox och två textboxar men vet inte hur jag kopplar ihop boxarna så att det den markering i comboboxen ger mig de två andra värdena i textboxarna. snälla är det någon som kan hjälpa mig.
en nybörjareSv: koppling databas vb.net
[Edit]
Såg fel. Trodde du hade problem med kopplingen. Det du gör är att i den kontrollen du har namnen sätter du en autopostback. I page-load sen så sätter du att om det är postback så ska den publicera den informationen i de andra kontrollerna som hör i hop med namnet. Hoppas du förstår vad jag menar :)Sv:koppling databas vb.net
en nybörjareSv: koppling databas vb.net
<code>
Sub Page_Load()
If Page.IsPostBack Then
...
End If
End Sub
</code>
Vad som händer då är att när du klickar på ett namn i comboboxen så aktiverar du innehåller i If-satsen. I den If-satsen så skriver du databaskopplingen som hämtar värderna du önskar och skriver ut dessa till textboxarna.
<code>
Sub Page_Load()
If Page.IsPostBack Then
'Gör en koppling till databasen här
'Nu gör vi strängen som hämtar värdena
strSQL = "Select * From Databastabell Where id=@ID"
...
'Här hämtar vi värdet till id
cmdCommand.Parameters.AddWithValue("@ID", ComboBox.SelectedItem.Value)
...
'Nu skriver vi ut värdena vi hittar i databasen
TextBox1.Text = Värde1fråndatabasen
TextBox2.Text = Värde2fråndatabasen
TextBox3.Text = Värde3fråndatabasen
...
End If
End Sub
</code>
Det är principen på hur du ska göra (hoppas det inte skiljer sig alltför mycket från asp.net :))
Hoppas det blir lite klarare då.Sv:koppling databas vb.net
Du skall iställer använda sig av händelsen <b>SelectedIndexChanged</b> på din Combobox, och i den händelsen skall du köra kod liknande den som Hans beskrev.Sv: koppling databas vb.net
Private Sub cmbBox1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Contacts\Contacts.mdb")
Dim strSql As String = "SELECT * FROM Companies"
Dim dbCommand As New OleDbCommand(strSql, cn)
'Dimensionera en dataadapter
Dim minAdapter As New OleDbDataAdapter(strSql, cn)
'Fyll datasetet
minAdapter.Fill(mittDataset)
' Öppna db kopplingen
cn.Open()
minReader = dbCommand.ExecuteReader()
' minReader måste läsa
While minReader.Read()
cmbBox1.Items.Add(minReader.GetValue(0) & "")
End While
' Ställ ComboBox1 på första post
cmbBox1.SelectedIndex = 0
'Visa första Companies
intRadITabell = 0
Call VisaCompanies()
' Stäng kopplingen
cn.Close()
End Sub
Public Sub VisaCompanies()
txtBox1.Text = mittDataset.Tables(0).Rows(intRadITabell).Item(2)
txtBox2.Text = mittDataset.Tables(0).Rows(intRadITabell).Item(4)
End Sub
en nybörjareSv:koppling databas vb.net
Försök att göra lite kod, och när du kör fast så skriver du hur långt du har kommit, så hjälper vi dig därifrån.Sv: koppling databas vb.net
Sv:koppling databas vb.net
Private Sub cmbBox1_Load hämtar datan till din combobox och det fungerar väl? Nästa steg är att utveckla vidare på Public Sub VisaCompanies()
<code>
Public Sub VisaCompanies()
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\Contacts\Contacts.mdb")
Dim strSql As String = "SELECT * FROM Companies WHERE id=@ID"
Dim dbCommand As New OleDbCommand(strSql, cn)
Dim myParm As OleDbParameter = dbCommand.Parameters.Add("@ID", OleDbType.Int)
myParm.Value = cmbBox1.SelectedItem.Value
cn.Open()
Dim reader As OleDbDataReader = dbCommand.ExecuteReader()
TextBox1.Text = myReader.GetString(1)
TextBox2.Text = myReader.GetString(2)
reader.Close()
cn.Close()
End Sub
</code>
Liknande detta (är inte expert just på oledb). Den på din combobox måste du sätta
<code>
OnSelectedItemChanged="VisaCompanies" AutoPostBack="True"
</code>
Hoppas det ska fungera :)Sv: koppling databas vb.net
ok, om jag gör en ny sub med cmbBox1_SelectedIndexChanged, hur får jag den till att visa det jag vill??