vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
OleDCommand für schreiben in dBase Tabelle 
Autor: neckisch
Datum: 21.07.11 16:30

Hallo VB.NET Kollegen,

ich stehe vor folgendem Problem:
Ich muss eine Tabelle mit zwei spalten in einer dBase IV Datei speichern. Prinzipiell klappt dies auch. Zuerst wird eine leere dBase Tabelle mit den ensprechenden Spalten erzeugt.
Danach wird die Tabelle in ein DataSet überführt, das DataSet mit Daten gefüllt und gespeichert.
Dazu verwende ich einen DataAdapter und einen CommandBuilder, der mir die Update & Insert Kommandos genieriert.

Nun ist es leider so, dass eine der Spalten "TEXT" heißen muss, damit ein bestehendes und nicht änderbares Programm die Datei aktzeptiert.
Beim Select Kommando kann ich die Spalte noch mit eckigen Klammern kennzeichnen, der CommandBuilder verwendet sie dann aber nicht mehr, sodass die Befehle nicht (oder nur mit Fehler) abgesetzt werden können. Ändert man die Bezeichnung in "TEXT_" funktionieren die generierten Kommandos tadellos.

Nun habe ich schon probiert, die generierten Kommandos nachzubilden, und diese zu verwenden.
Hier erscheint dann allerdings eine Fehlermeldung "Parameter?_1 hat keinen Standardwert". Ich habe jedoch keine Möglichkeit gefunden, diesen anzugeben.
Auch habe ich die vom CommandBuilder generierten Kommandos nach dieser Eigenschaft durchsucht aber nichts gefunden.
-> kann und falls la wo kann man diese Standardwerte angeben?

Anbei noch ein paar Code-Schnipsel, um euch eine bessere Übersicht:

' VARIANTE 1 -> mit CommandBuilder -------------------
Dim connDBase As New OleDbConnection
Dim cmdDBaseSelect As New OleDbCommand
Dim daDBase As New OleDbDataAdapter
Dim dsDBase As New DataSet
 
Dim SqlSelectQuery As String = "SELECT [SATZ], [TEXT] FROM TABELLE"
 
connDBase.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
  "Source=D:\;Extended Properties=DBASE IV;"
 
connDBase.Open()
cmdDBaseSelect.Connection = connDBase
cmdDBaseSelect.CommandText = SqlSelectQuery
daDBase.SelectCommand = cmdDBaseSelect
 
dsDBase.Tables.Add("Tabelle")
daDBase.Fill("Tabelle")
 
' DataSet dsDBase füllen
 
Dim CmdB1 As OleDbCommandBuilder = New OleDbCommandBuilder
CmdB1.DataAdapter = daDBase
daDBase.UpdateCommand = CmdB1.GetUpdateCommand()
daDBase.InsertCommand = CmdB1.GetInsertCommand() 
 
 
Try
    daDBase.Update(dsDBase, StrFileWoExt.ToUpper)
Catch ex As Exception
    MsgBox(ex.Message)
Finally
    connDBase.Close()
End Try
--> Ergebnis: Fehler in Insert Kommando (Vermutung wegen Fehlender [] Klammern)


' VARIANTE 2 -> Kommandos selbst erstellt -------------------
Dim cmdDBaseInsert As New OleDbCommand
Dim cmdDBaseUpdate As New OleDbCommand
 
cmdDBaseInsert.Connection = connDBase
cmdDBaseInsert.CommandText = "INSERT INTO TABELLE ([SATZ], [TEXT]) VALUES (?," & _
  "?)"
daDBase.InsertCommand = cmdDBaseInsert
 
cmdDBaseUpdate.Connection = connDBase
cmdDBaseUpdate.CommandText = "UPDATE TABELLE SET [SATZ]= ?, [TEXT] = ? WHERE ((" & _
  "[SATZ]= ?) AND ((? = 1 AND [TEXT] IS NULL) OR ([TEXT] = ?)))" ' von CmdB 
' übernommen, nur um [] ergänzt
daDBase.UpdateCommand = cmdDBaseUpdate
 
daDBase.InsertCommand.Parameters.Add("@p1", OleDbType.VarChar, 50, "[SATZ]")
daDBase.InsertCommand.Parameters.Add("@p2", OleDbType.VarChar, 50, "[TEXT]")
 
daDBase.UpdateCommand.Parameters.Add("@p1", OleDbType.VarChar, 50, "[SATZ]")
daDBase.UpdateCommand.Parameters.Add("@p2", OleDbType.VarChar, 50, "[TEXT]")
daDBase.UpdateCommand.Parameters.Add("@p3", OleDbType.VarChar, 50, "[SATZ]")
daDBase.UpdateCommand.Parameters.Add("@p4", OleDbType.VarChar, 50, "[TEXT]")
daDBase.UpdateCommand.Parameters.Add("@p5", OleDbType.VarChar, 50, "[TEXT]")
--> "Parameter?_1 hat keinen Standardwert"

Kann mir jemand helfen, die Kommandos richtig anzugeben oder sagen wie ich den CommandBuilder dazu bringe, die [] Klammern zu verwenden?

Danke & Gruß
neckisch
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
OleDCommand für schreiben in dBase Tabelle3.291neckisch21.07.11 16:30
Re: OleDCommand für schreiben in dBase Tabelle1.393ModeratorFZelle21.07.11 18:37
Gelöst - Nutzung von OleDbCommand Prefix & Suffix1.338neckisch22.07.11 10:15
Kürzen des Tabellennamens (& Dateinamens) auf 8 Zeichen verh...1.241neckisch22.07.11 15:07
Re: Kürzen des Tabellennamens (& Dateinamens) auf 8 Zeichen ...1.272ModeratorFZelle22.07.11 15:14

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel