Hallo,
ich möchte bei einer select Anweisung eines DataAdapters Parameter verwenden. Jedoch bekomme ich bei der Ausführung meines Programmes immer folgende Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
Ich habe eine Klasse für meine Datenbankzugriffe gebastelt. Hier der Codeausschnitt mit der Selectabfrage:
Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Public Class DatabaseFunctions
Dim dbReadAdapter As New SqlDataAdapter
Dim dbconn As New SqlConnection()
Public Function Read(ByVal dbReadSqlString As String, ByVal dbReadTable As _
String)
Dim dbReadSql As String = dbReadSqlString
Dim dbReadAdapter As New SqlDataAdapter(dbReadSql, dbconn)
Dim dbReadBuilder As New SqlCommandBuilder(dbReadAdapter)
Dim dbReadData As New DataSet()
dbReadData.Clear()
dbReadAdapter.Fill(dbReadData, dbReadTable)
Return dbReadData.Copy
End Function
Public Sub ReadParamAdd(ByVal dbReadParamName As String, ByVal _
DbReadParamValue As Object)
dbReadAdapter.SelectCommand.Parameters.AddWithValue(dbReadParamName, _
DbReadParamValue)
End Sub
Public Sub ReadParamClear()
dbReadAdapter.SelectCommand.Parameters.Clear()
End Sub
End Class Hier der Code, der die Klasse aufruft:
Private Sub ArbeitszeitBuchen_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Dim ÜbersichtData, KundenData As New DataSet
Dim row As DataRow
Dim counter As Integer = 0
Dim item As String
Dim BenutzerID As String
Dim Datum As String
Try
With ArbeitszeitBuchenGrid
.RowsDefaultCellStyle.BackColor = Color.MistyRose
.AlternatingRowsDefaultCellStyle.BackColor = Color.Ivory
.RowHeadersVisible = False
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Raised
.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Sunken
.ColumnHeadersDefaultCellStyle.BackColor = Color.IndianRed
End With
AnmerkungTxt.BackColor = Color.Ivory
Datum = ArbeitszeitBuchenDate.Value.ToShortDateString
BenutzerID = Login.BenID
AußendienstChk.Checked = True
VerrechnungJaChk.Checked = True
' Arbeitszeitbuchen Datagrid füllen
db.ReadParamClear()
db.ReadParamAdd("@Datum", Datum)
db.ReadParamAdd("BenutzerID", BenutzerID)
db.Open()
'ÜbersichtData = db.Read("select" & _
"BenutzerID,KundenID,KundenName,Datum, convert(" & _
"nvarchar,Start,108) as Start, convert(nvarchar,Ende,108) as" & _
"Ende, convert(nvarchar,Dauer,108) as Dauer," & _
"Arbeitsort,Verrechnung, Anmerkung from Arbeitszeit where" & _
"BenutzerID = '" + BenutzerID + "'and Datum ='" + Datum + "'" & _
"order by Datum desc, Start asc", "Arbeitszeit")
ÜbersichtData = db.Read("select" & _
"BenutzerID,KundenID,KundenName,Datum, convert(nvarchar,Start,108)" & _
"as Start, convert(nvarchar,Ende,108) as Ende, convert(" & _
"nvarchar,Dauer,108) as Dauer, Arbeitsort,Verrechnung, Anmerkung" & _
"from Arbeitszeit where BenutzerID = @BenutzerID and Datum =@Datum" & _
"order by Datum desc, Start asc", "Arbeitszeit")
db.Close()
ArbeitszeitBuchenGrid.DataSource = ÜbersichtData.Tables( _
"Arbeitszeit").DefaultView
'Spalten ausblenden
ArbeitszeitBuchenGrid.Columns("Anmerkung").Visible = False
ArbeitszeitBuchenGrid.Columns("BenutzerID").Visible = False
ArbeitszeitBuchenGrid.Columns("KundenID").Visible = False
db.Open()
KundenData = db.Read("select Name from Kunden", "Kunden")
db.Close()
'Arbeitszeitbuchen Combobox füllen
For Each row In KundenData.Tables("Kunden").Rows
item = KundenData.Tables("Kunden").Rows(counter).Item("Name")
KundenCombo.Items.Add(item)
counter += 1
Next
'Leeres Dataset abfangen
If ÜbersichtData.Tables("Arbeitszeit").Rows.Count = 0 Then
DatensatzUpdateBtn.Enabled = False
Exit Sub
Else
'Anmerkung im Anmerkung Textfeld anzeigen
ArbeitszeitBuchenGrid.Rows(0).Selected = True
AnmerkungTxt.Text = ArbeitszeitBuchenGrid.SelectedRows.Item( _
0).Cells("Anmerkung").Value()
End If
Catch f As Exception
MsgBox(f.Message, MsgBoxStyle.Critical, "Fehler")
Exit Sub
End Try
End Sub Ich probiere jetzt schon Stundenlang den Fehler zu finden, schaffe es aber nicht. Ich hoffe, dass Ihr mir weiterhelfen könnt.
Mfg,
madmax |