DataSet - Tabelle manuell befüllen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DataSet - Tabelle manuell befüllen

    Hallo,

    wollte ein Dataset bzw. eine darin enthaltene Tabelle manuell befüllen...

    Code:

    VB.NET-Quellcode

    1. Dim sCN As String = My.Settings.Database1ConStr
    2. Dim sql As String = "SELECT * FROM Tab_Dokumente WHERE Dok_Kategorie IN " & _
    3. "(" & String.Join(",", KatIDs) & ") "
    4. Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection(sCN)
    5. Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sql, cn)
    6. Dim cmd As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(da)
    7. da.Fill(Me.Database1DataSet.Tab_Dokumente)


    Fehlermeldung:
    Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.
    angegeben bei:
    da.Fill(Me.Database1DataSet.Tab_Dokumente)

    Habt Ihr da vllt. ne Idee dazu ?

    Gruß
    lris

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „lris08“ ()

    Hi,
    habe mir das jetzt nochmal angeschaut- ich kann hier keine "Falschangabe" erkennen- also was evtl. ein unbekanntes Wort darstellen könnte.

    so versuche ich die DataSet gebundene Tabelle Namens Tab_Dokumente zu füllen:

    VB.NET-Quellcode

    1. Private Sub LadeDokumentenmappen()
    2. Dim KatIDs As New List(Of String)
    3. For Each nd As TreeNode In TreeView_GetSelectedNodes(Me.TreeView1.Nodes)
    4. KatIDs.Add(nd.Tag.ToString)
    5. Next
    6. If KatIDs.Count > 0 Then
    7. Dim sCN As String = My.Settings.Database1ConStr
    8. Dim sql As String = "SELECT * FROM Tab_Dokumente WHERE Dok_Kategorie IN (" & String.Join(",", KatIDs) & ") "
    9. Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection(sCN)
    10. Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sql, cn)
    11. Dim cmd As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(da)
    12. da.Fill(Me.Database1DataSet.Tab_Dokumente)
    13. Else
    14. Exit Sub
    15. End If
    16. End Sub

    In diesem Code werden alle "Kategorien" die per Checkbox im TreeView markiert wurden ausgelesen und sollten ausgegeben werden bzw. in die Tab_Dokumente gefüllt werden.

    Derzeit behelfe ich mir mit dem Designer... Database1DataSet.xsd mit dieser Abfrage:

    VB.NET-Quellcode

    1. SELECT *
    2. FROM Tab_Dokumente
    3. WHERE (Dok_Kategorie = @Kat)

    Diese Abfrage wird gesteuert über:

    VB.NET-Quellcode

    1. Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
    2. If e.Node.Checked = True Then
    3. e.Node.Checked = False
    4. Else
    5. e.Node.Checked = True
    6. End If
    7. Dim Kategorie As String = e.Node.Tag
    8. Try 'Try zum testen
    9. Me.Tab_DokumenteTableAdapter.FillBy_Kategorie(Me.Database1DataSet.Tab_Dokumente, Kategorie)
    10. Catch ex As Exception
    11. MsgBox(ex.Message)
    12. End Try
    13. End Sub

    So funktionierts zwar, aber in diesem Fall kann nur eine Kategorie ausgewählt werden...

    Vielleicht habt Ihr noch eine Idee dazu!?

    Die Fehlermeldung bei dieser Codezeile:
    da.Fill(Me.Database1DataSet.Tab_Dokumente)

    Fehlermeldung:
    Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

    Gruß
    lris
    Ganz prinzipiell: Sql-Probleme kann man nur lösen, wenn man den fehlerhaften CommandText auch sieht.

    lris08 schrieb:

    VB.NET-Quellcode

    1. Dim sql As String = "SELECT * FROM Tab_Dokumente WHERE Dok_Kategorie IN " & _ "(" & String.Join(",", KatIDs) & ") "
    Hier sieht man den CommandText nicht, denn wir wissen ja nicht, was bei dir bei String.Join(",", KatIDs) herauskommt.

    Also wenn du bitte mal den Wert von 'sql' posten könntest...