PDA

Vollständige Version anzeigen : ParameterCollection


Ricardo1980
26.02.2008, 20:14
Ich habs nochmal total neu gemacht ohne Ballast aber immer noch der gleiche Fehler:

bei "da.Update(dt)" kommt immer:

Die OleDbCommand.Prepare-Methode erfordert, dass für alle Parameter explizit ein Typ festgelegt wird.

Ohne ParamterCollection (ohne die Zeile: da.SelectCommand.Parameters.AddWithValue("@bu", strBU) ) und wenn ich die Variable direkt in den SQL String schreibe funzt alles einwandfrei. Was mache ich flasch?



Imports System.Data.OleDb
Public Class Form1

Private conn As OleDbConnection
Private cmd As OleDbCommand
Private da As OleDbDataAdapter
Private ds As DataSet
Private dt As DataTable
Private dv As DataView

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strBU As String = "BU1"
da = New OleDbDataAdapter(cmd)
ds = New DataSet()
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source =P:\INFO_BMK\Produktion\Daten-Access\Reparatur\reparatur_be_test.mdb")

'cmd = New OleDbCommand("Select * from reparaturen_tab where bu = 'bu1'", conn)
da.SelectCommand = New OleDbCommand("Select * from reparaturen_tab where bu like @bu", conn)
da.SelectCommand.Parameters.AddWithValue("@bu", strBU)

conn.Open()
da.Fill(ds, "RepListe")
conn.Close()
dt = ds.Tables.Item("RepListe")
dv = ds.DefaultViewManager.CreateDataView(dt)
dv.Sort = ""
DataGrid1.DataSource = dv






End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim cb As New OleDbCommandBuilder(da)
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
'Dim rw As DataRow = dt.NewRow
[B]da.Update(dt) <--- da kommt der Fehler
End Sub
End Class

Robert_Zenz
10.03.2008, 11:40
Moin!

Ich bin mir nicht 100% sicher ob das auch für dich passt, aber ich hab das bis jetzt so gelöst:


DtAda.InsertCommand = New Odbc.OdbcCommand("UPDATE TABLE WHERE Bu = ?")
DtAda.InsertCommand.Parameters.Add(New Odbc.OdbcParameter("Bu", strBu))


Rob