Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    16

    [VB.NET] dataset e ADO.net

    Ciao a tutti!
    ho bisogno di un aiutino.
    uso vb.net da poco tempo ho difficoltà con ADO.net

    è possibile mettere 2 tabelle in un dataset?


    strConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=prova.mdb" & ";Persist Security Info=False"

    strConn.Open()

    strSQL = "SELECT cognome FROM tblA"
    ds = New DataSet("tblC")
    da = New OleDb.OleDbDataAdapter(strSQL, strConn)
    da.Fill(ds, "tblC")

    strSQL = "SELECT nome FROM tblA"
    ds = New DataSet("tblN")
    da = New OleDb.OleDbDataAdapter(strSQL, strConn)
    da.Fill(ds, "tblN")


    bs = New BindingSource()
    bs.DataSource = ds.Tables("tblC")
    bs.DataMember = "tblC"

    strConn.Close()

    ListBox1.DataSource = ds.Tables("tblC")
    ListBox1.DisplayMember = "Cognome"
    ListBox1.DataBindings.Add("Text", bs, "Cognome")
    End Sub

    run time error
    Impossibile stabilire l'associazione alla proprietà o alla colonna cognome di DataSource. Nome parametro: dataMember

    Grazie

  2. #2
    Ciao.
    hai fatto un pò di confusione.
    1) non è necessario creare due istanze del dataset, altrimenti non avrai mai un dataset con due tabelle .... ma due dataset con una tabella ciascuno.
    2) Se chiami il dataset tblC non puoi chiamare anche la DataTable(creata dal metodo fill) con lo stesso nome( tblC) .... o per lo meno non è logico.
    3) Il BindingSource non ha bisogno di avere valorizzata la proprietà DataMember(o quanto meno non in questo caso)
    4) Crei un bindingsource che in seguito,di fatto, non usi .... o quanto meno ne fai riferimento solo per l'associazione in DataBinding.

    Detto questo .....
    codice:
    strConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=prova.mdb" & ";Persist Security Info=False"
    
    strConn.Open()
    
    strSQL = "SELECT cognome FROM tblA"
    ds = New DataSet("MioDataSEt")
    da = New OleDb.OleDbDataAdapter(strSQL, strConn)
    da.Fill(ds, "tblC")
    
    strSQL = "SELECT nome FROM tblA"
    da = New OleDb.OleDbDataAdapter(strSQL, strConn)
    da.Fill(ds, "tblN")
    
    
    bs = New BindingSource()
    bs.DataSource = ds.Tables("tblC")
    
    strConn.Close()
    
    ListBox1.DataSource = bs
    ListBox1.DisplayMember = "Cognome"
    ListBox1.DataBindings.Add("Text", bs, "Cognome")
    End Sub
    Facci sapere....
    Ciao

  3. #3
    Per la precisione:
    Quando fai
    codice:
    ds = New DataSet("tblC")
    e poi
    codice:
    ds = New DataSet("tblN")
    in realtà sostituisci la prima istanza(tblC) con la seconda(tblN), quindi, di fatto, nella tua applicazioni ti ritrovi con un Dataset chiamato "tblN" ... e basta.
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.