' Prozedur: Erstellt eine Spalte in einer Datenbanktabelle
Public Sub DataColumnCreate(ByRef DataObjects As DataObject, ByVal Table As _
String, ByVal Name As String)
' Befehlsstring erstellen
Dim CreateString As String = "ALTER TABLE [" & Table & "] ADD [" & Name _
& "] TEXT;"
' OleDb-Command auf Befehlsstring erstellen
Dim MyCommand As New OleDb.OleDbCommand(CreateString, _
DataObjects.Connection)
Try
' Connection öffnen
DataObjects.Connection.Open()
' OleDb-Command ausführen
MyCommand.ExecuteNonQuery()
' Auch dem Dataset die Column hinzufügen
DataObjects.DataSet.Tables(Table).Columns.Add(Name, Type.GetType( _
"System.String"))
Catch ex As Exception
MsgBox(ex.Message, , "DataColumnCreate")
Finally
DataObjects.Connection.Close()
End Try
End Sub
' Prozedur: Erstellt eine Datenbanktabelle
Public Sub DataTableCreate(ByRef DataObjects As DataObject, ByVal Name As _
String)
' Befehlsstring erstellen
Dim CreateString As String = "Create Table [" & Name & "] ( ID INTEGER" & _
"PRIMARY KEY);"
' OleDb-Command auf Befehlsstring erstellen
Dim MyCommand As New OleDb.OleDbCommand(CreateString, _
DataObjects.Connection)
Try
' Connection öffnen
DataObjects.Connection.Open()
' OleDb-Command ausführen
MyCommand.ExecuteNonQuery()
' Auch dem Dataset die Tabelle hinzufügen
DataObjects.DataSet.Tables.Add(Name)
' Primaryschlüssel hinzufügen
Dim MyPrimaryKeys(0) As DataColumn
MyPrimaryKeys(0) = DataObjects.DataSet.Tables(Name).Columns.Add( _
"ID")
DataObjects.DataSet.Tables(Name).PrimaryKey = MyPrimaryKeys
Catch ex As Exception
MsgBox(ex.Message, , "DataTableCreate")
Finally
DataObjects.Connection.Close()
End Try
End Sub Hier hast du den Code, der diese Funktionen aufruft. Bei der letzten Zeile kommt dann der Fehler.
' Alle Input-Objekte der HTML-Vorlage der Formsarray hinzufügen
With Documents(Documents.Length - 1)
' Zwischen-Array nimmt alle Input-Elemente auf
Dim ArrInput As Object = .DOM.All.Tags("input")
' Inputs-Array erweitern
ReDim .Inputs(ArrInput.Length - 1)
' Alle Input-Elemente durchgehen
For i As Integer = 0 To ArrInput.Length - 1
' Namen in Inputs-Array speichern
.Inputs(i).Name = ArrInput(i).Name
Next
End With
' DataObjects instanzieren
DataObjectsInit(Documents(Documents.Length - 1).DataObjects, _
Application.StartupPath & "\backup\" & _
FrmMain.TabHost.SelectedTab.Title & ".atz")
' Neue Datenbankdateiinstanz
Dim MyCat As ADOX.Catalog = New ADOX.Catalog
' Datenbankdatei erstellen
MyCat.Create(Documents(Documents.Length - _
1).DataObjects.Connectionstring & "; Jet OLEDB:Engine Type=5")
' Dataset Sheet-Tabelle hinzufügen
DataTableCreate(Documents(Documents.Length - 1).DataObjects, _
"Sheets")
' Prüfen, ob alle Datenfelder vorhanden sind
For i As Integer = 0 To Documents(Documents.Length - 1).Inputs.Length - _
1
If Documents(Documents.Length - 1).DataObjects.DataSet.Tables( _
"Sheets").Columns.Contains(Documents(Documents.Length - 1).Inputs( _
i).Name) = False Then
' Datenfeld nicht vorhanden, erstellen
DataColumnCreate(Documents(Documents.Length - 1).DataObjects, _
"Sheets", Documents(Documents.Length - 1).Inputs(i).Name)
End If
Next
' Erstes Sheet hinzufügen
SheetAdd(, Documents.Length - 1)
' Schon ma Updaten, nur zum Test
DataSetUpdate(Documents(Documents.Length - 1).DataObjects)Hier hast du noch SheetAdd, da werden neue Rows eingefügt und Testweise gefüllt.
' Prozedur: Fügt ein Zeugnis hinzu
Public Sub SheetAdd(Optional ByVal Name As String = "Kein Name", ByVal _
DocumentIndex As Integer = -1)
With Documents(DocumentIndex)
' Neuen Datensatz im Dataset anlegen
Dim MyRow As DataRow = .DataObjects.DataSet.Tables("Sheets").NewRow
For i As Integer = 0 To .DataObjects.DataSet.Tables( _
"Sheets").Columns.Count - 1
MyRow.Item(.DataObjects.DataSet.Tables("Sheets").Columns( _
i).Caption()) = Name
Next
' Primary Key...
MyRow.Item("ID") = .Sheetpanel.LsvSheets.Items.Count - 1
.DataObjects.DataSet.Tables("Sheets").Rows.Add(MyRow)
End With
End SubViel Spass
Dartrax
Meine Homepage: www.dartrax.de Posting wie es leibt und lebt
. . . und voll daneben geht!
|