webForumDet fria alternativet

hämta från databasen

.NET

4 svar · 386 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

Skulle behöva hjälp med att hämta ut från databasen. Har hittills följande kod:

    Const sql1 = "Select Company FROM Companies"
    Const sql2 = "Select URL address, Phone, Company FROM Companies"
    Dim conString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\databas.mdb"
    Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(conString)
    Dim objDataSet As DataSet = New DataSet()
    Dim objDataAdapter As OleDb.OleDbDataAdapter

    Private Sub myData(ByVal SQLn As String)
        objDataSet = New DataSet()
        conn = New OleDb.OleDbConnection(conString)
        conn.Open()
        objDataAdapter = New OleDb.OleDbDataAdapter(SQLn, conn)
        objDataAdapter.Fill(objDataSet, "Companies")
        conn.Close()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        myData(sql1)
        cbNamn.DataSource = objDataSet.Tables("Companies")
        cbNamn.DisplayMember = "Company"
    End Sub

    Private Sub cbNamn_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbNamn.SelectedIndexChanged
        myData(sql2)

        If Me.cbNamn.SelectedIndex <> -1 Then
            txtTelefon.Text = objDataSet.Companies.Rows(cbNamn.SelectedIndex)("Phone").ToString
            txtMail.Text = objDataSet.Companies.Rows(cbNamn.SelectedIndex)("URLaddress").ToString
        Else
            Exit Sub
        End If

    End Sub

Det är när man trycker på cbNamn (ComboBox) som det ska hämtas från databasen. Som koden ser ut nu, så gnäller den följande:

Companies' is not a member of 'System.Data.DataSet'

på raderna:

txtTelefon.Text = objDataSet.Companies.Rows(cbNamn.SelectedIndex)("telefon").ToString
  
txtMail.Text = objDataSet.Companies.Rows(cbNamn.SelectedIndex)("email").ToString

Hur löser jag detta??

Tacksam för all hjälp :stud

Medlem sedan mars 20023 561 inlägg
#2
txtTelefon.Text = objDataSet.Tables("Companies").Rows(cbNamn.SelectedIndex)("telefon").ToString()

samt

txtMail.Text = objDataSet.Tables("Companies").Rows(cbNamn.SelectedIndex)("email").ToString()
Medlem sedan sep. 2005833 inlägg
#3

ok, tack. får nu följande felmeddelande:

Syntaxfel (operator saknas) i frågeuttrycket 'URL address'.

på raden:

objDataAdapter.Fill(objDataSet, "Companies")

i

    Private Sub cbNamn_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbNamn.SelectedIndexChanged
    Const sql1 = "Select Company FROM Companies"
    Const sql2 = "Select URL address, Phone, Company FROM Companies"
    Dim conString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\databas.mdb"
    Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(conString)
    Dim objDataSet As DataSet = New DataSet()
    Dim objDataAdapter As OleDb.OleDbDataAdapter

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        objDataSet = New DataSet()
        conn = New OleDb.OleDbConnection(conString)
        conn.Open()
        objDataAdapter = New OleDb.OleDbDataAdapter(sql1, conn)
        objDataAdapter.Fill(objDataSet, "Companies")
        conn.Close()

        cbNamn.DataSource = objDataSet.Tables("Companies")
        cbNamn.DisplayMember = "Company"
    End Sub

    Private Sub cbNamn_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbNamn.SelectedIndexChanged

        objDataSet = New DataSet()
        conn = New OleDb.OleDbConnection(conString)
        conn.Open()
        objDataAdapter = New OleDb.OleDbDataAdapter(sql2, conn)
        objDataAdapter.Fill(objDataSet, "Companies")
        conn.Close()

        If Me.cbNamn.SelectedIndex <> -1 Then
            txtTelefon.Text = objDataSet.Tables("Companies").Rows(cbNamn.SelectedIndex)("telefon").ToString()
            txtMail.Text = objDataSet.Tables("Companies").Rows(cbNamn.SelectedIndex)("email").ToString()
        Else
            Exit Sub
        End If

    End Sub

Hur löser jag detta?? :q

Medlem sedan mars 20023 561 inlägg
#4

Du har glömt ett ',' (komma) i SQL-satsen. Borde vara: Const sql2 = "Select URL, address, Phone, Company FROM Companies"

Sedan förstår jag inte varför du hämtar samma info från databasen igen. Tycker att du istället borde hämta allting på en gång, och sedan bara plocka ut info:n ur datasetet när man har valt en post i cbNamn.

Egentligen skulle cbNamn_SelectedIndexChanged kunna se ut så här:

Private Sub cbNamn_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbNamn.SelectedIndexChanged
    If Me.cbNamn.SelectedIndex <> -1 Then
        txtTelefon.Text = objDataSet.Tables("Companies").Rows(cbNamn.SelectedIndex)("telefon").ToString()
        txtMail.Text = objDataSet.Tables("Companies").Rows(cbNamn.SelectedIndex)("email").ToString()
    End If
End Sub
Medlem sedan sep. 2005833 inlägg
#5

tack Josef, nu funkar det :bire

253 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)