Data Table Internal Index Is Corrupted 5

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
<div style="color:Black;background-color:White; <pre>
<p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Im Anhang finden Sie ein VB-Programm zur Reproduzierbarkeit des Fehlers „Data Table Internal Index <span style="color:Blue; Is Corrupted 5“. <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Folgende Schritte sind durchzuführen: <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Entzippen <span style="color:Blue; in ein geeignetes Verzeichnis <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">VB 2008 compiler starten und DataTableInternalIndexIsCorrupted5.sln auswählen. <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small"><span style="color:Blue; In der OledbConnection den  Connectionstring entsprechend dem Verzeichnis der Datenbank TESTDatenbank.mdb ändern <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Das Programm starten und den Knopf „<span style="color:Blue; with database“ oder „without database“ drücken <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Ddie <span style="color:Blue; in der Labelbox angegebenen Knöpfe des Bindingnavigators drücken. <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Abhängig von der Vorauswahl („<span style="color:Blue; with <span style="color:Blue; or without database“ bzw. <span style="color:Blue; with primarykey oder ohne primarykey ) erhält man <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Im Falle „without database“ ohne primarykey keinen Fehler <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Ansonsten endet das Programm mit Fehler <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">  <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">  <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Mit freundlichen Grüßen/Best regards <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">  <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Klaus Unterforsthuber <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">  <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Deidesheimer Str. 11 <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">67125 Dannstadt <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">Tel.: +49(0)6231/2996 <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small">E-Mail: <a href=<span style="color:#A31515; "mailto:Klaus.Unterforsthuber@web.de"><span style=<span style="color:#A31515; "font-family:Calibri; color:#0000ff; font-size:small">Klaus.Unterforsthuber@web.de <p style=<span style="color:#A31515; "margin:0cm 0cm 0pt"><span style=<span style="color:#A31515; "font-family:Calibri; font-size:small"> 
[/code]
<div style="color:Black;background-color:White; <pre>
<span style="color:Green;
<span style="color:Green; Without primarykey and without database the program works without errors
<span style="color:Green;
<span style="color:Green; in all other cases the program failes after the instruction in the label lblTEST
<span style="color:Green; Errormessage(without primarykey):
<span style="color:Green; Der interne DataTable-Index ist beschädigt: 5.
<span style="color:Green;
<span style="color:Green; Errormessage (with primarykey):
<span style="color:Green; Die Spalte TEST_ID hat die Einschränkung, dass sie eindeutig sein muss. Der Wert 9 ist bereits vorhanden.
<span style="color:Green; (This message is not correct, because the primarykey is always unique)
<span style="color:Blue; Public <span style="color:Blue; Class frmDataTableInternalIndexIsCorrupted5
<span style="color:Blue; Dim TestTable <span style="color:Blue; As DataTable
<span style="color:Blue; Dim <span style="color:Blue; WithEvents TestBindingSource <span style="color:Blue; As BindingSource
<span style="color:Blue; Dim ViewMod <span style="color:Blue; As DataView
<span style="color:Blue; Dim ViewAdd <span style="color:Blue; As DataView
<span style="color:Blue; Dim ViewDel <span style="color:Blue; As DataView
<span style="color:Blue; Dim OlConnection <span style="color:Blue; As OleDbConnection
<span style="color:Blue; Dim OlAdapter <span style="color:Blue; As OleDbDataAdapter
<span style="color:Blue; Dim OlCommand <span style="color:Blue; As OleDbCommand
<span style="color:Blue; Dim Prim() <span style="color:Blue; As <span style="color:Blue; String = {<span style="color:#A31515; "TEST_ID"}
<span style="color:Blue; Dim Primcolumns() <span style="color:Blue; As DataColumn


<span style="color:Blue; Private <span style="color:Blue; Sub frmDataTableInternalIndexIsCorrupted5_Load(<span style="color:Blue; ByVal sender <span style="color:Blue; As <span style="color:Blue; Object, <span style="color:Blue; ByVal e <span style="color:Blue; As System.EventArgs) <span style="color:Blue; Handles <span style="color:Blue; Me.Load
OlConnection = <span style="color:Blue; New OleDbConnection
OlConnection.ConnectionString = <span style="color:#A31515; "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:UsersUnterforsthuberDatenBankenColorProgTestdatenbank.mdb;Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Dont Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"
OlCommand = <span style="color:Blue; New OleDbCommand(<span style="color:#A31515; "", OlConnection)
OlAdapter = <span style="color:Blue; New OleDbDataAdapter


TestTable = <span style="color:Blue; New DataTable
TestBindingSource = <span style="color:Blue; New BindingSource
ViewMod = <span style="color:Blue; New DataView(TestTable)
ViewMod.RowStateFilter = DataViewRowState.ModifiedCurrent
ViewAdd = <span style="color:Blue; New DataView(TestTable)
ViewAdd.RowStateFilter = DataViewRowState.Added
ViewDel = <span style="color:Blue; New DataView(TestTable)
ViewDel.RowStateFilter = DataViewRowState.Deleted
<span style="color:Green;
<span style="color:Green;
<span style="color:Green;
<span style="color:Green; DATASOURCE darf hier nicht festgelegt werden
<span style="color:Green;
<span style="color:Green;
<span style="color:Green;
TestBindingSource.DataSource = TestTable
BindingNavigTest.BindingSource = TestBindingSource
<span style="color:Green;
<span style="color:Green;
BindingNavigTest.Enabled = <span style="color:Blue; False

<span style="color:Blue; End <span style="color:Blue; Sub
<span style="color:Blue; Private <span style="color:Blue; Sub btnWithDBASE_Click(<span style="color:Blue; ByVal sender <span style="color:Blue; As <span style="color:Blue; Object, <span style="color:Blue; ByVal e <span style="color:Blue; As System.EventArgs) <span style="color:Blue; Handles btnWithDBASE.Click

TestTable.Clear()

OlCommand.CommandText = <span style="color:#A31515; "SELECT * FROM TBL_TEST"
OlAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
OlAdapter.SelectCommand = OlCommand
OlConnection.Open()

OlAdapter.Fill(TestTable)

<span style="color:Blue; If <span style="color:Blue; Not chkPrimaryKey.Checked <span style="color:Blue; Then
<span style="color:Green; Delete Primarykey
TestTable.Constraints.Clear()
<span style="color:Blue; End <span style="color:Blue; If
TestTable.AcceptChanges()
<span style="color:Green;
<span style="color:Green;
txtID.DataBindings.Clear()
txtName.DataBindings.Clear()

txtID.DataBindings.Add(<span style="color:#A31515; "TEXT", TestBindingSource, <span style="color:#A31515; "Test_ID")
txtName.DataBindings.Add(<span style="color:#A31515; "TEXT", TestBindingSource, <span style="color:#A31515; "Test_NAME")
<span style="color:Green;
<span style="color:Green;
<span style="color:Green;

BindingNavigTest.Enabled = <span style="color:Blue; True
<span style="color:Blue; End <span style="color:Blue; Sub

<span style="color:Blue; Private <span style="color:Blue; Sub btnWithoutDBASE_Click(<span style="color:Blue; ByVal sender <span style="color:Blue; As <span style="color:Blue; Object, <span style="color:Blue; ByVal e <span style="color:Blue; As System.EventArgs) <span style="color:Blue; Handles btnWithoutDBASE.Click
TestTable.Columns.Add(<span style="color:#A31515; "Test_ID", <span style="color:Blue; GetType(<span style="color:Blue; Integer))
TestTable.Columns.Add(<span style="color:#A31515; "Test_NAME", <span style="color:Blue; GetType(<span style="color:Blue; String))
TestTable.Columns.Add(<span style="color:#A31515; "Test_STATE", <span style="color:Blue; GetType(<span style="color:Blue; Boolean))
TestTable.AcceptChanges()
<span style="color:Blue; If chkPrimaryKey.Checked <span style="color:Blue; Then
<span style="color:Blue; ReDim Primcolumns(0)
Primcolumns(0) = TestTable.Columns(<span style="color:#A31515; "TEST_ID")
TestTable.Constraints.Add(<span style="color:#A31515; "PRIM", Primcolumns, <span style="color:Blue; True)
<span style="color:Blue; End <span style="color:Blue; If
<span style="color:Green;
<span style="color:Green;
<span style="color:Green;
txtID.DataBindings.Clear()
txtName.DataBindings.Clear()

txtID.DataBindings.Add(<span style="color:#A31515; "TEXT", TestBindingSource, <span style="color:#A31515; "Test_ID")
txtName.DataBindings.Add(<span style="color:#A31515; "TEXT", TestBindingSource, <span style="color:#A31515; "Test_NAME")
<span style="color:Green;
<span style="color:Green;
<span style="color:Green;
BindingNavigTest.Enabled = <span style="color:Blue; True
<span style="color:Blue; End <span style="color:Blue; Sub
<span style="color:Blue; Private <span style="color:Blue; Sub TestBindingSource_AddingNew(<span style="color:Blue; ByVal sender <span style="color:Blue; As <span style="color:Blue; Object, <span style="color:Blue; ByVal e <span style="color:Blue; As System.ComponentModel.AddingNewEventArgs) <span style="color:Blue; Handles TestBindingSource.AddingNew
TestTable.Columns(<span style="color:#A31515; "TEST_ID").DefaultValue = MaxTabID(TestTable) + 1
TestTable.Columns(<span style="color:#A31515; "TEST_NAME").DefaultValue = <span style="color:#A31515; "Name " & <span style="color:Blue; CStr(TestTable.Columns(<span style="color:#A31515; "TEST_ID").DefaultValue)
<span style="color:Blue; End <span style="color:Blue; Sub


<span style="color:Blue; Private <span style="color:Blue; Sub TestBindingSource_CurrentChanged(<span style="color:Blue; ByVal sender <span style="color:Blue; As <span style="color:Blue; Object, <span style="color:Blue; ByVal e <span style="color:Blue; As System.EventArgs) <span style="color:Blue; Handles TestBindingSource.CurrentChanged
<span style="color:Blue; If ViewMod.<span style="color:Blue; Count > 0 <span style="color:Blue; Then

<span style="color:Green;
<span style="color:Green; Modified
<span style="color:Green; Modify changes for the application
<span style="color:Green;
ViewMod(0).Row.AcceptChanges()
<span style="color:Blue; End <span style="color:Blue; If

<span style="color:Blue; If ViewAdd.<span style="color:Blue; Count > 0 <span style="color:Blue; Then


<span style="color:Green;
<span style="color:Green; Added
<span style="color:Green; Add changes for the application
<span style="color:Green;
ViewAdd(0).Row.AcceptChanges()
<span style="color:Blue; End <span style="color:Blue; If
<span style="color:Blue; If ViewDel.<span style="color:Blue; Count > 0 <span style="color:Blue; Then


<span style="color:Green;
<span style="color:Green; Deleted
<span style="color:Green; Delete changes for the application
<span style="color:Green;
ViewDel(0).Row.AcceptChanges()
<span style="color:Blue; End <span style="color:Blue; If

<span style="color:Blue; End <span style="color:Blue; Sub
<span style="color:Blue; Function MaxTabID(<span style="color:Blue; ByVal TestTable <span style="color:Blue; As DataTable) <span style="color:Blue; As <span style="color:Blue; Integer
<span style="color:Blue; Dim ID <span style="color:Blue; As <span style="color:Blue; Integer
<span style="color:Blue; Dim i <span style="color:Blue; As <span style="color:Blue; Integer
ID = 0
<span style="color:Blue; For i = 0 <span style="color:Blue; To TestTable.Rows.<span style="color:Blue; Count - 1
<span style="color:Blue; If ID < TestTable.Rows(i)(<span style="color:#A31515; "TEST_ID") <span style="color:Blue; Then
ID = TestTable.Rows(i)(<span style="color:#A31515; "TEST_ID")
<span style="color:Blue; End <span style="color:Blue; If
<span style="color:Blue; Next
MaxTabID = ID
<span style="color:Blue; End <span style="color:Blue; Function
<span style="color:Blue; End <span style="color:Blue; Class
[/code]

View the full article
 
Back
Top