Access Datenban mit VB.Net erzeugen

08/03/2009 - 18:21 von Enrico Wegge | Report spam
Hallo,

ich möchte in VB.Net eine Access Datenbank erstellen. Mit folgendem ADOX-
Befehl wird die Datenbank / Tabelle erzeugt.

column = New ADOX.Column
With column
.ParentCatalog = catalog
.Name = "MAPINFO_ID"
.Type = ADOX.DataTypeEnum.adInteger
.Properties("Nullable").Value = False
.Properties("Jet OLEDB:Allow Zero Length").Value = False
.Properties("AutoIncrement").Value = True
End With
table.Columns.Append(column, , )
column = New ADOX.Column
With column
.ParentCatalog = catalog
.Name = "Stadtteil"
.Type = ADOX.DataTypeEnum.adVarWChar
.Properties("Fixed Length").Value = True
.DefinedSize = 50
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Compressed UNICODE Strings").Value = False
.Properties("Jet OLEDB:Allow Zero Length").Value = True
End With
table.Columns.Append(column, , )


Mit der Eigenschaft ".Properties("Jet OLEDB:Compressed UNICODE
Strings").Value = False" wollte ich erreichen, das das Feld nicht mit
Leerzeichen auffgefüllt wird, wenn der Eintrag für das Feld weniger Zeichen
hat als die maximale Feldlànge ist.

Wenn die Tabelle in Access direkt erstellt wird, funktioniert dies auch.

Kennt jemand eine Möglichkeit dies auch aus einer VB-Anwendung herraus zu
bewerkstelligen?

Gruß Enrico
 

Lesen sie die antworten

#1 Elmar Boye
08/03/2009 - 19:14 | Warnen spam
"Enrico Wegge" schrieb im Newsbeitrag news:
Hallo,

ich möchte in VB.Net eine Access Datenbank erstellen. Mit folgendem ADOX-
Befehl wird die Datenbank / Tabelle erzeugt.

With column
.ParentCatalog = catalog
.Name = "Stadtteil"
.Type = ADOX.DataTypeEnum.adVarWChar
.Properties("Fixed Length").Value = True
.DefinedSize = 50
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Compressed UNICODE Strings").Value = False
.Properties("Jet OLEDB:Allow Zero Length").Value = True
End With
table.Columns.Append(column, , )


Mit der Eigenschaft ".Properties("Jet OLEDB:Compressed UNICODE
Strings").Value = False" wollte ich erreichen, das das Feld nicht mit
Leerzeichen auffgefüllt wird, wenn der Eintrag für das Feld weniger Zeichen
hat als die maximale Feldlànge ist.



Das bewirkt etwas anderes, nàmlich das Access Unicode-Zeichenketten
intern komprimiert, die im unteren (8-Bit-Bereich) liegen, was bei
westlichem Zeichensatz (auch in Deutschland) den Großteil
der verwendeten Zeichen ausmacht.
Dadurch bleibt die Datenbank kleiner (und es passt ggf. mehr hinein).

Wenn die Tabelle in Access direkt erstellt wird, funktioniert dies auch.



Solange Du einen variable Zeichenkette verwendest, wie hier:
.Type = ADOX.DataTypeEnum.adVarWChar


so geschieht das auch in .NET. Vielmehr ist hier die Eigenschaft
.Properties("Fixed Length").Value = True
überflüssig.

Und bei OleDbParametern solltest Du OleDbType.adVarWChar verwenden.
Und natürlich keine überflüssigen Leerzeichen beim Value übergeben.

Gruß Elmar

Ähnliche fragen