Benutzer mit den meisten Antworten
numerische spalten und werte...

Frage
-
Hallo,
uff..so jetzt gehen die eigentlichen Probleme los :)
Alos, ich habe eine ACCESS Mappe per
CREATE Statement erstellt, dabei eine Spalte
mit RabattSatz numeric(6,2) in diesem Statement...Wird in ACCESS auch soweit korrekt dargestellt.
wenn ich jetzt per OleDbDataAdapter den Spaltenwert mit
19.25 oder 19,25 oder "19.25" oder "19,25" von VB aus zu schreiben versuche bekomme ich in dem Feld
immer nur 1925,00 unter ACCESS angezeigt... Muss ich beim OleDbDataAdapter irgendwo noch das Dezimaltrennzeichen definieren ?Gibt es irgendwo eine Basisklasse für numerische Textboxen ? Im Web gibts zwar hundetausendeinträge wie man nur numerische
Eingaben in einer Textbox zulässt, aber nicht das ganze drum herum..
Sprich wenn die Spalte nur 3 vorkommastellen zulässt und nur 2 nachkommastellen, dann darf der User auch nicht mehr eingeben.
Mit MaxTextlengh funktioniert das ganze nicht wirklich. Ebenfalls das ein leeres Feld nicht "leer" dargestellt wird, sondern 0,00 ...Im Datagridview wird mir diese Numerische Spalte augenscheinlich als Text dargestellt ( linksbündig).
Muss ich im Adapter.Fill noch was einstellen, damit numierische Spalten automatisch korrekt dargestellt
werden (rechtsbündig mit Dezimaltrennzeichen und gründsätzlich 2 0en..Danke euch wie immer !
Mario
Antworten
-
Hallo Mario,
wie schon mehrfach angesprochen, gibt es in einer Jet-DB
keine Vor- oder Nachkommastellen. Dies sind rein Access-
interne Formatierungsanweisungen. Für das Speichern von
Zahlenwerten mit beliebiger Anzahl von Vor- und Nachkommastellen
brauchst Du einfach ein Feld vom Typ Single, Double oder Währung
(currency).Um einen neuen Datensatz in der DB zu speichern, brauchst Du
einen Insert-Command. Um einen vorhandenen Datensatz in der
DB zu verändern (eines oder auch mehrere Felder) brauchst Du
einen Update-Command. Wenn es nur darum geht, brauchst Du
weder einen DataAdapter noch eine DataTable.Unter
www.gssg.de -> Visual Basic -> VB.net
-> Datenbank
-> DB CommandObjekt / DataReaderfindest Du ein Programm in dem Du Dir die Arbeitsweise der
verschiedenen Commands (Insert, Update, Delete) ansehen
kannst.
Um von vorneherein erst gar kein Problem mit unterschiedlichen
Dezimaltrennern (Punkt, Komma) entstehen zu lassen, solltest Du
Werte nicht direkt in Deine CommandTexte eintragen, sondern
immer mit Parameter-Objekten arbeiten. Auch das siehst Du in
dem o.g. Beispiel.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort markiert Thorsten Dörfler Samstag, 31. Juli 2010 16:17
-
Hallo,
Hier mal ein kompl. ablauffähiges Beispiel, mit dem Du
einen neuen Datensatz in die Tabelle "Tabelle" einer Access.mdb
schreiben kannst.
Die Tabelle muss ein Feld "ID" vom Typ Integer enthalten,
welches auch als Primärschlüssel definiert ist. Ein als
Primärschlüssel definiertes Feld ist für den CommandBuilder
erforderlich, damit er mit den von ihm gebildeten Commands
jeweils einen ganz bestimmten Datensatz eindeutig adressieren kann.Public Class Form1
Private mDA As OleDb.OleDbDataAdapter
Private mDT As DataTable
Private mCB As OleDb.OleDbCommandBuilder
Private mCNN As OleDb.OleDbConnection
Private DGV As DataGridView
Private WithEvents BtnNew As ButtonPrivate Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.LoadDGV = New DataGridView
With DGV.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 70).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.Bottom.AllowUserToAddRows = False
End With
Me.Controls.Add(DGV)BtnNew = New Button
With BtnNew
.Font = New Font("Arial", 10)
.Name = "BtnNew"
.SetBounds(10, DGV.Bottom + 10, 120, 40)
.Text = "New Record".Anchor = _
AnchorStyles.Left Or _
AnchorStyles.BottomEnd With
Me.Controls.Add(BtnNew)CreateData()
DGV.DataSource = mDT
End Sub
Private Sub Form1_FormClosing _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs _
) Handles Me.FormClosingIf mCNN IsNot Nothing Then
If mCNN.State And ConnectionState.Open = _
ConnectionState.Open ThenmCNN.Close()
End IfEnd If
End Sub
Private Sub BtnNew_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles BtnNew.Click' Neuen Datensatz erstellen und in der DB speichern
InsertNewRecord()End Sub
Private Sub Form1_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Click' zum Testen der Function GetNextID
MsgBox(GetNextID, MsgBoxStyle.Information)
End SubPrivate Function GetNextID() As Integer
' Liefert die in der DB-Tabelle enthaltene höchste ID + 1
Dim Cmd As New OleDb.OleDbCommand _
("Select Max(ID) From Tabelle", mCNN)Dim Ret As Object
Ret = Cmd.ExecuteScalar
If Ret = Nothing Then
Return 1
Else
Return CInt(Ret) + 1
End If
End FunctionPrivate Sub InsertNewRecord()
Dim DR As DataRow
DR = mDT.NewRow
Dim ID As Integer = GetNextID()With DR
.Item(0) = ID
.Item(1) = "Hallo Welt"
.Item(2) = 25.4
.Item(3) = "Admin"
.Item(4) = Now
End WithmDT.Rows.Add(DR)
MsgBox _
(mCB.GetInsertCommand.CommandText, _
MsgBoxStyle.Information)mDA.Update(mDT)
End Sub
Private Sub CreateData()
mCNN = GetConnection("D:\DataBases\DB2002.mdb")
mCNN.Open()mDA = _
New OleDb.OleDbDataAdapter _
("Select * From Tabelle", mCNN)mDA.MissingSchemaAction = _
MissingSchemaAction.AddWithKey
mDT = New DataTable
mDA.FillSchema(mDT, SchemaType.Mapped)mCB = New OleDb.OleDbCommandBuilder(mDA)
End SubPrivate Function GetConnection _
(ByVal FileName As String) As OleDb.OleDbConnectionDim CSB As New OleDb.OleDbConnectionStringBuilder
Dim CNN As OleDb.OleDbConnectionWith CSB
.DataSource = FileName
.Provider = "Microsoft.Jet.OLEDB.4.0"' Connectionpooling ausschalten
.OleDbServices = -4' DB im geteilten Modus öffnen
.Add("Mode", "Share Deny None")' Pagelocking ab Access-Version 2000
.Add("Jet OLEDB:Database Locking Mode", 1)
End WithCNN = New OleDb.OleDbConnection(CSB.ConnectionString)
Return CNN
End FunctionEnd Class
Nach dem Programmstart siehst Du eine Form mit einem
DataGridView sowie einem Button "New Record".
Das DataGridView ist nach dem Programmstart erst mal
leer, da mit DataAdapter.FillSchema nur das Tabellenschema
jedoch keine Daten in die DataTable (mDT) geladen werden.
Mit jedem Klick auf den Button "New Record" kannst Du
nun einen neuen Datensatz erzeugen, der sofort im DGV
sichtbar wird und auch gleich in der DB-Tabelle gespeichert
wird.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort markiert Thorsten Dörfler Samstag, 31. Juli 2010 16:16
Alle Antworten
-
Hallo Mario,
mit "ACCESS Mappe" meinst Du vermutlich eine Tabelle in
einer Access-Datenbankdatei (*.mdb)?Handelt es sich dabei um eine bereits bestehende *.mdb
oder hast Du diese selbst via Programmcode erstellt?
Wenn ja, wie?Wie genau sieht Dein Commandobjekt (Code) mit Deinem
CREATE-Statement aus?Sofern Du numerische Werte via Programmcode in ein numerisches
Feld einer Tabelle Deiner *.mdb schreibst, gilt dafür die internationale
(engl.) Schreibweise mit dem Punkt als Dezimaltrenner.Das Problem "Punkt oder Komma" kannst Du aber ganz einfach durch
Verwendung von Parameter-Objekten vermeiden.Aus Deiner Beschreibung wird nicht ersichtlich wie Du Deine
Eingabefelder (Textboxen?) an die zugrundeliegende DataTable
gebunden hast, bzw. ob Du überhaupt mit Datenbindung arbeitest.Unter
www.gssg.de -> Visual Basic -> VB.net
-> Datenbank
-> DataGridView
-> DataTable / DataView / CurrencyManagerfindest Du eine Reihe von Beispielen bei denen Textboxen und/oder
DataGrid/DataGridView an DataTables resp. DataViews gebunden
sind.
Im Beispiel "DB CommandObjekte / DataReader" siehst Du, wie Du
direkt mit Commandobjekten u. zugehörigen Parameterobjekten
arbeiten kannst.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo Peter,
in verkürzter Form sieht das ganze so aus :
Dim oCommandBuilder As OleDbCommandBuilder
Dim oRow As DataRow
dim oDataTable As New System.Data.DataTable()
cPKSpalte = odbServer.aStruk(0, 0)oAdapter = New OleDbDataAdapter("SELECT * FROM " + odbServer.cDbName + " WHERE 1=2", frmMainWindow.odbServer.oConn)
oCommandBuilder = New OleDbCommandBuilder(oAdapter)
oAdapter.Fill(oDataTable)
oRow = oDataTable.NewRow()
oRow(cPKSpalte) = GetGuidID()
oDataTable.Rows.Add(oRow)
'oDataTable.Rows(0)("Rabatt") = "19.60"
'oDataTable.Rows(0)("Rabatt") = "19,60"
oDataTable.Rows(0)("Rabatt") = 19.60oAdapter.Update(oDataTable)
Die Spalte unter ACCESS ist aber mit 6 Vorkommastellen und 2 Nachkommastellen definiert und lässt sich unter ACCESS auch direkt mit 19,60 Rabatt eingeben...
Hoffe das Hilft...
bye,
Mario
-
Hallo Mario,
erst mal verstehe ich nicht, was Du mit Deinem
"SELECT * FROM " + odbServer.cDbName + " WHERE 1=2"
erreichen willst.
Du bekommst damit 0 Datensätze, da Deine Where-Klausel
1 = 2 niemals erfüllt ist.
Später erstellst Du mit oDataTable.NewRow eine neue DataRow
und weist der Spalte cPKSpalte dieser DataRow einen GUID zu.
Soweit noch OK.
Nun solltest Du aber nicht oDataTable.Rows.Add(oRow) ausführen,
sondern erst mal die übrigen Felder Deines neuen Datensatzes
mit Werten bestücken. Also oRow.Item("Rabatt") = 19.60
und erst nachdem Du alle Felder des neuen Datensatzes mit
Werten belegt hast diesen neuen Datensatz via oDataTable.Rows.Add(oRow)
an die Rows-Auflistung Deiner DataTable anfügen.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo Mario,
Deine 6 Vorkammastellen und 2 Nachkommastellen in Access
sind eine ganz andere Baustelle und haben nichts mit Deinem
Problem zu tun. Dies Vor- u. Nachkommastellen sind rein
Access-interne Formatierungen, die sich in keinster Weise auf
die Columns Deiner DataRows aus Deiner DataTable auswirken.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo Peter,
ohne
erst mal verstehe ich nicht, was Du mit Deinem
"SELECT * FROM " + odbServer.cDbName + " WHERE 1=2"
erreichen willst.und einem Datafill kennt die Datatable doch gar nicht die Spalte "Rabatt" ... irgendwie muss ich ja die Struktur und die verfügbaren Felder mit den entsprechenden Werttypen in die Datatable bekommen um dann wieder per Row darauf zugreifen zu können...
Mario
-
Noch mal ich,
sind eine ganz andere Baustelle und haben nichts mit Deinem
Problem zu tun. Dies Vor- u. Nachkommastellen sind rein
Access-interne Formatierungen, die sich in keinster Weise auf
die Columns Deiner DataRows aus Deiner DataTable auswirken.Warum nicht ? Muss ich denn jetzt die gesamte Tabellenstruktur wiederum händisch in VB nachstellen in einem Dataset, damit ich Spaltentypen wie Datum, Numerische oder Logische Columns haben? Das wird wohl auch der grund erstmal sein, das numerische Spalten irgendwie linksbündig und nicht rechtsbündig im Datagrid dargestellt werden?
-
Hi Mario,SQL kennt keine Vor- und Nachkommastellen. Das ist Sache der Bedienoberfläche und damit auf Access-Seite eine access-interne Sache. Wenn Du eine .NET-Windows-Anwendung erstellst, dann musst Du in der Oberfläche die Formatierung festlegen (UI-Design). Eine Datenbankabfrage kann Dir nicht die Access-Interna der Oberfläche bereitstellen. Auch die Orientierung ist Sache der Oberfläche und wird auch nicht von einer Datenbankabfrage unterstützt. Für die Gestaltung der Oberfläche ist der Designer verantwortlich; die Daten stellt SQL bereit.
Viele Gruesse
Peter -
Hi Mario,im Standardfall wird in der Client-Anwendung eine Inline-Datenbank auf Basis der im Projekt abzubildenden Prozesse erstellt. Da werden Tabellen mit Spalten und deren Typen festgelegt. Diese Inline-Datenbank kann über unterschiedliche Wege gefüllt werden, so z.B. auch über ein DataAdapter.Fill aus einer externen Datenbank. Eine �?bereinstimmung zwischen Tabellennamen, Feldnamen und Feldtypen zwischen Inline- und externer Datenbank ist nicht zwingend, kann aber sein. Ein Sonderfall liegt vor, wenn von einer externen Datenbank geladen wird und in der Inleine-Datenbank Tabellen und Spalten fehlen. Um in diesem Fall keinen Fehler zu werfen, hat man sich entschieden, die fehlenden Objekte implizit so anzulegen, dass danach ein fehlerfreier Import der Daten möglich ist.
Viele Gruesse
Peter -
Hallo Peter,
hmm ja soweit ok... Es lösst nur mein Problem nicht das ich einfach keine lächerliche Rabatt Zahl in einem Datenbankfeld speichern kann mit zwei Nachkommastellen...
Woran kann es denn liegen ?
Das Create Statement für die ACCESS Tabelle habe ich schon mit Decimal(6,2) oder auch Numeric(6,2) ausprobiert. Im Programmcode VOR dem AddRow den Wert 19.2 oder 19.55 reingeschrieben...Update läuft..und in der Tabelle taucht eine 192,00 oder 1955,00 auf...
bye,
Mario
-
Hallo,
Du musst nicht die gesamte Tabellenstruktur händisch
in VB nachstellen. Das kann Dein DataAdapter mit Hilfe
von DataAdapter.FillSchema(). Die Online-Hilfe zu .Fillschema()
gibt umfassende Auskunft, auf welche Weise Du damit ein
Tabellenschema aus Deiner Datenbank in Deine lokale
DataTable übertragen kannst.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo Mario,
wie schon mehrfach angesprochen, gibt es in einer Jet-DB
keine Vor- oder Nachkommastellen. Dies sind rein Access-
interne Formatierungsanweisungen. Für das Speichern von
Zahlenwerten mit beliebiger Anzahl von Vor- und Nachkommastellen
brauchst Du einfach ein Feld vom Typ Single, Double oder Währung
(currency).Um einen neuen Datensatz in der DB zu speichern, brauchst Du
einen Insert-Command. Um einen vorhandenen Datensatz in der
DB zu verändern (eines oder auch mehrere Felder) brauchst Du
einen Update-Command. Wenn es nur darum geht, brauchst Du
weder einen DataAdapter noch eine DataTable.Unter
www.gssg.de -> Visual Basic -> VB.net
-> Datenbank
-> DB CommandObjekt / DataReaderfindest Du ein Programm in dem Du Dir die Arbeitsweise der
verschiedenen Commands (Insert, Update, Delete) ansehen
kannst.
Um von vorneherein erst gar kein Problem mit unterschiedlichen
Dezimaltrennern (Punkt, Komma) entstehen zu lassen, solltest Du
Werte nicht direkt in Deine CommandTexte eintragen, sondern
immer mit Parameter-Objekten arbeiten. Auch das siehst Du in
dem o.g. Beispiel.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort markiert Thorsten Dörfler Samstag, 31. Juli 2010 16:17
-
Hallo Peter,
cPKSpalte = odbServer.aStruk(0, 0)
'oDataTable = New System.Data.DataTable
oAdapter = New OleDbDataAdapter("SELECT * FROM " + odbServer.cDbName + " WHERE 1=2", frmMainWindow.odbServer.oConn)oCommandBuilder = New OleDbCommandBuilder(oAdapter)
oAdapter.FillSchema(oDataSet, SchemaType.Mapped)
'MessageBoxStop(oDataSet.Tables.Count, "")'oAdapter.Fill(oDataTable)
oDataTable = oDataSet.Tables(0)oRow = oDataTable.NewRow()
oRow.Item(cPKSpalte) = GetGuidID()
oRow.Item("MwStSatz") = 19.22oDataTable.Rows.Add(oRow)
oAdapter.Update(oDataTable)In etwa so mit dem Schema ? Geht nicht :((( ...
-
-
Hallo,
Hier mal ein kompl. ablauffähiges Beispiel, mit dem Du
einen neuen Datensatz in die Tabelle "Tabelle" einer Access.mdb
schreiben kannst.
Die Tabelle muss ein Feld "ID" vom Typ Integer enthalten,
welches auch als Primärschlüssel definiert ist. Ein als
Primärschlüssel definiertes Feld ist für den CommandBuilder
erforderlich, damit er mit den von ihm gebildeten Commands
jeweils einen ganz bestimmten Datensatz eindeutig adressieren kann.Public Class Form1
Private mDA As OleDb.OleDbDataAdapter
Private mDT As DataTable
Private mCB As OleDb.OleDbCommandBuilder
Private mCNN As OleDb.OleDbConnection
Private DGV As DataGridView
Private WithEvents BtnNew As ButtonPrivate Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.LoadDGV = New DataGridView
With DGV.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 70).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.Bottom.AllowUserToAddRows = False
End With
Me.Controls.Add(DGV)BtnNew = New Button
With BtnNew
.Font = New Font("Arial", 10)
.Name = "BtnNew"
.SetBounds(10, DGV.Bottom + 10, 120, 40)
.Text = "New Record".Anchor = _
AnchorStyles.Left Or _
AnchorStyles.BottomEnd With
Me.Controls.Add(BtnNew)CreateData()
DGV.DataSource = mDT
End Sub
Private Sub Form1_FormClosing _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs _
) Handles Me.FormClosingIf mCNN IsNot Nothing Then
If mCNN.State And ConnectionState.Open = _
ConnectionState.Open ThenmCNN.Close()
End IfEnd If
End Sub
Private Sub BtnNew_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles BtnNew.Click' Neuen Datensatz erstellen und in der DB speichern
InsertNewRecord()End Sub
Private Sub Form1_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Click' zum Testen der Function GetNextID
MsgBox(GetNextID, MsgBoxStyle.Information)
End SubPrivate Function GetNextID() As Integer
' Liefert die in der DB-Tabelle enthaltene höchste ID + 1
Dim Cmd As New OleDb.OleDbCommand _
("Select Max(ID) From Tabelle", mCNN)Dim Ret As Object
Ret = Cmd.ExecuteScalar
If Ret = Nothing Then
Return 1
Else
Return CInt(Ret) + 1
End If
End FunctionPrivate Sub InsertNewRecord()
Dim DR As DataRow
DR = mDT.NewRow
Dim ID As Integer = GetNextID()With DR
.Item(0) = ID
.Item(1) = "Hallo Welt"
.Item(2) = 25.4
.Item(3) = "Admin"
.Item(4) = Now
End WithmDT.Rows.Add(DR)
MsgBox _
(mCB.GetInsertCommand.CommandText, _
MsgBoxStyle.Information)mDA.Update(mDT)
End Sub
Private Sub CreateData()
mCNN = GetConnection("D:\DataBases\DB2002.mdb")
mCNN.Open()mDA = _
New OleDb.OleDbDataAdapter _
("Select * From Tabelle", mCNN)mDA.MissingSchemaAction = _
MissingSchemaAction.AddWithKey
mDT = New DataTable
mDA.FillSchema(mDT, SchemaType.Mapped)mCB = New OleDb.OleDbCommandBuilder(mDA)
End SubPrivate Function GetConnection _
(ByVal FileName As String) As OleDb.OleDbConnectionDim CSB As New OleDb.OleDbConnectionStringBuilder
Dim CNN As OleDb.OleDbConnectionWith CSB
.DataSource = FileName
.Provider = "Microsoft.Jet.OLEDB.4.0"' Connectionpooling ausschalten
.OleDbServices = -4' DB im geteilten Modus öffnen
.Add("Mode", "Share Deny None")' Pagelocking ab Access-Version 2000
.Add("Jet OLEDB:Database Locking Mode", 1)
End WithCNN = New OleDb.OleDbConnection(CSB.ConnectionString)
Return CNN
End FunctionEnd Class
Nach dem Programmstart siehst Du eine Form mit einem
DataGridView sowie einem Button "New Record".
Das DataGridView ist nach dem Programmstart erst mal
leer, da mit DataAdapter.FillSchema nur das Tabellenschema
jedoch keine Daten in die DataTable (mDT) geladen werden.
Mit jedem Klick auf den Button "New Record" kannst Du
nun einen neuen Datensatz erzeugen, der sofort im DGV
sichtbar wird und auch gleich in der DB-Tabelle gespeichert
wird.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort markiert Thorsten Dörfler Samstag, 31. Juli 2010 16:16
-
Hallo Mario,
au weia,
ich denke, ich habe Dir mehr als einmal geschrieben,
dass Du ein numerisches Feld vom Typ Single, Double
oder Currency brauchst um Deine num. Werte mit
Vor- u. Nachkommastellen zu speichern.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Hallo Peter,
magst du mir noch einmal verzeihen? Ich glaube vor lauter Hitze habe ich nicht jedes Wort gelesen und du hast ja recht, die Lösung steckte schon in deiner Antwort. Nur war und bin ich immer noch drauf fixiert Datenbankfelder nur so anzulegen, mit dem Speicher-Platz den ich brauche und ich halte ein Feldtyp Double für einen Rabatt einfach zu groß.
Ich komme aus der dBase - Umgebung und dort gibts halt die Möglichkeit ein numerisches Feld mit 6 Vorkomma und 2 Nachkommastellen anzulegen ; zumal das gleiche augenscheinlich in ACCESS geht und ich unter ACCESS direkt auch ein 19,22 eintragen konnte nur unter VB halt nicht :)
Anyhow, auch dein Beispiel mit dem Anlegen des Datensatzes, den solltest du mal auf diese Homepage www.gssg.de reingeben, denke das ist für viele Anfänger (inklusive mir) viel viel verständlicher als diese ganzen anderen Beispiele, denn es beschränkt sich auf das was man erstmal machen möchte :) Eine Tabelle darstellen und einen Datensatz anlegen ...
ein schönes Wochenende ! und danke allen anderen aus diesem Thread für die Antworten !
Mario