online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon spaceman vom 20.09.2019, 10:05 Options

Tabellenerstellung mit Code

Hallo, ich hab da mal ein Problem

Ich arbeite mit Access 2000.
Ich erstelle temp. Tabellen vor dem Füllen mit Werten in einer Funktion.

Beispiel:
-------------------------------------------------
Dim DB As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field

Set DB = CurrentDb
Set tdf = DB.CreateTableDef("tArtikel")

Set fld = tdf.CreateField("MaxWert", dbDouble)
tdf.Fields.Append fld

DB.TableDefs.Append tdf
DB.TableDefs.Refresh
Application.RefreshDatabaseWindow

Set DB = Nothing
-------------------------------------------------
Dabei wird das Feld "MaxWert" als Zahl mit dem Typ Double angelegt.
Nun meine Frage. Kann ich diesem Feld auch gleich zuweisen, das die Zahl z.B. 2 Kommastellen haben soll? Habe weder in meinen Büchern noch in der Online-Hilfe etwas gefunden.

Vielen Dank schon mal für die Hilfe!


Antwort schreiben

Antwort 1 von lleopard vom 20.09.2019, 15:40 Options

Hallo Spaceman,

ein bisschen probieren, und schon wars da, undzwar sehr wohl in der Access-Hilfe, man mußte nur etwas phantasie und geduld haben...

Hier die Lösung:

Sub Test()
Dim dbs As DATABASE, tdf As TableDef
Dim fld As Field

' Bezug auf aktuelle Datenbank zurückgeben.
Set dbs = CurrentDb
' Bezug auf Tabelle "tArtikel" zurückgeben.
Set tdf = dbs.TableDefs!tArtikel
'Und aus der Auflistung der Felder, die Eigenschaft für Dezimalstellen auf 2 setzen
tdf.Fields("MaxWert").Properties("DecimalPlaces") = 2

Set dbs = Nothing
End Sub

wobei das die entscheidende Zeile ist, die du in dein Modul eibauen müsstest:

tdf.Fields("MaxWert").Properties("DecimalPlaces") = 2

Gruß Leo

Antwort 2 von spaceman vom 20.09.2019, 17:01 Options

Danke Leo,

ich probiers gleich mal aus. Wäre ja wirklich einfach.

Antwort 3 von spaceman vom 20.09.2019, 17:32 Options

Habe jetzt alles gleich ausprobiert. Leider bekomme ich ständig bei Ausführen der betreffenden Zeile den Laufzeitfehler 3270, "Eigenschaft nicht gefunden". Finde aber auch nicht die Ursache. Woran kann das nun wieder liegen?

Antwort 4 von lleopard vom 21.09.2019, 14:39 Options

Hi spaceman,

Vielleicht an deiner Access-Version.

Wenn du deinen Code mal Schrittweise ausführst und dann im Testfenster dir die Einträge ansiehst, solltest du eigentlich rausfinden, wie und wo man die Eigenschaft DecimalPlaces einstellt. Ich hab Access97 und 2003. Probiert hatte ich das mit 97. Ich weiß aber auch nicht, ob das unter 2003 klappt.... werde es testen! ;-)

Gruß Leo

Antwort 5 von lleopard vom 21.09.2019, 14:45 Options

Hi,

habs jetzt unter 2003 auch getestet und es funzt...

Hast du mal probiert meine function / sub separat laufen zu lassen? also einfach mal testweise ohne Felder zu erstellen.

Der Fehler liegt vielleicht in der Abfolge. Wenn du Felder erstellst, kannst du nicht gleich auf das tabledef-objekt zugreifen und einstellungen ändern. Habs noch nicht probiert, aber das könnte ein grund sein...

lg leo

Antwort 6 von spaceman vom 21.09.2019, 16:55 Options

Hi, Leo

Habe deine Sub-Routine separat laufen lassen. Da tritt die Fehlermeldung direkt beim Ausführen deiner Zeile

tdf.Fields("MaxWert").Properties("DecimalPlaces") = 2

auf. Wie gesagt "Eigenschaft nicht gefunden". Das gleiche passiert auch wenn ich es in meine Funktion einbaue. Ach wenn ich es nach der vollständigen Tabellenerstellung als separate Funktion starte. Habe auch schon versucht ob vielleicht ein Verweis fehlt. Konnte aber auch da keinen Erfolg erziehlen.

Gruß spaceman

Antwort 7 von lleopard vom 21.09.2019, 18:31 Options

hi spaceman,

Das hat mit den Verweisen auch nix zu tun. Wenn er die Eigenschaft so nicht kennt, dann schau doch mal nach wie sie bei dir heißt.

Wie gesagt, einfach im Einzelschritt die Routine bis zu dieser Zeile laufen lassen, dann im Testfenster einfach mal die Items unter fields => Properties checken. Bei mir wars Item24, da steht dann "DecimalPlaces". Vielleicht steht bei dir ja Dezimalstellen oder so.

Also wie gesagt, bei mir funktioniert es unter 97 und 2003!

Gruß Leo

Antwort 8 von spaceman vom 21.09.2019, 19:01 Options

Hi Leo

Mit dem Letzten kann ich nicht wirklich was anfangen.
In welchem Testfenster sehe ich welches Item es ist?
Und wo sehe ich welches Item, welcher Begriff ist?

Einzelschritt (F8) ist mir klar, denn da hab ich ja gesehen das er genau bei der Zeile hängenbleibt. Mit dem anderen kann ich mal ehrlich gesagt nichts anfangen.
Es funktioniert sicherlich auch unter 2000, ich weiß nur nicht wie!

Gruß spaceman

Antwort 9 von lleopard vom 24.09.2019, 08:40 Options

hi spaceman

ich habe ehrlich gesagt Office2000 einfach übersprungen. Deswegen weiß ich nicht wie das bei A2K aussieht. Aber!!!

in jeder Access-Version hast du ein Testfenster, meistens zu als Button zu finden neben dem Objektkatalog, wo man auch die Verweise einstellt. Das Ding heißt auch Testfenster, wenn man die Maus draufhält. sieht aus wie ein windowsfenster, hat aber ein rotes Ausrufezeichen im icon. Solltest du leicht finden. Das mußt du halt mal aktivieren.

Dann findest du auch die Einträge zu deinem Tabellenobjekt und kannst dir die Properties ansehen. Dort findest du dann auch die Items.

Gruß Leo

Antwort 10 von spaceman vom 24.09.2019, 18:13 Options

hi Leo,

ein Testfenster gibt es bei Access 2000 nicht. Habe alles durchsucht. Habe auch im Menü Anpassen... nach dem Symbol gesucht, welches du beschrieben hast. Auch dieses habe ich nicht hefunden. Es gibt aber im Menü --> Ansicht ein Local-Fenster. In diesem werden beim Ablauf der Sub-Routiene TableDef und auch Fields angezeigt. Wenn man sich dann weiter durchklickt kann man unter Field und dann Properties die Items sehen. Es sind bei mir Item1 bis Item20.
Bei deren Namen weist aber nichts auf irgendwas mit Dezimalstellen oder änliches hin. Da gibt es nur sowas wie Name, Type, Value und so.

Gruß spaceman

Antwort 11 von lleopard vom 25.09.2019, 08:59 Options

Hi spaceman

Dann liegt es vielleicht doch an deiner Access-Version!?

Zitat:
Bei deren Namen weist aber nichts auf irgendwas mit Dezimalstellen oder änliches hin. Da gibt es nur sowas wie Name, Type, Value und so.


Wie gesagt, sowohl Access97 als auch 2003 machen das problemlos. hast du ne möglichkeit das mit einer anderen Version zu testen???

Gruß leo

Antwort 12 von spaceman vom 25.09.2019, 18:13 Options

hi Leo

Danke für deine Hilfe. Mal sehen ob ich mal auf einer anderen Version testen kann. Ich kann mir momentan nichts besseres leisten. Muss es eben so gehen.

Gruß spaceman

Antwort 13 von Marie vom 26.09.2019, 02:30 Options

na dann versuchs mal so, zuerst das feld anhängen, dann die property, Achtung ungetestet

Gruß Marie

Dim fFormat As Property,

Set fld = tdf.Fields("MaxWert")
Set fFormat = fld.CreateProperty("DecimalPlaces", DB_BYTE, 2)
fld.Properties.Append fFormat

Antwort 14 von Marie vom 26.09.2019, 03:10 Options

sorry, geschlampt:

Dim fFormat As Property

Set fld = tdf.Fields("MaxWert")
Set fFormat = fld.CreateProperty("DecimalPlaces", DBBYTE, 2)
fld.Properties.Append fFormat

Antwort 15 von spaceman vom 26.09.2019, 13:22 Options

hi Marie,

vielen Dank, das mit den 2 Dezimalstellen hat funktioniert.
Bei der Allgemein - Anzeige für das Feld in der Entwicklungsansicht der Tabelle wird es angezeigt.
Aber die in die Tabelle eingegebenen Werte werden trotzdem als Zahl ohne Nachkommastellen angezeigt. Ich vermute mal das es an dem FORMAT des Feldes liegt. Das muss sicherlich auch noch auf Standardzahl eingestellt werden. Jedenfalls funktioniert es wenn man in der fertigen Tabelle von Hand das Format umstellt. Hab auch schon im Code versucht das FORMAT bei der Erstellung mit vorzugeben, aber ich weiß den Syntax und auch den Begriff für Standardzahl nicht.
Kannst du mir da auch noch mal weiterhelfen?

Gruß spaceman

Antwort 16 von spaceman vom 26.09.2019, 16:33 Options

hi und Danke noch mal an alle.

Habe das mit Format und der Standardzahl hingekriegt. Funktioniert auch alles wie ich es mir vorgestellt habe.

Gruß spaceman

Ähnliche Themen

Zeichenkettenaddition bei VBA?
Den  16.02.2007 - 80 Hits - 5 Antworten

Eingabefelder Positionieren
Deathfun  09.04.2007 - 122 Hits - 9 Antworten

Syntaxproblem
danielG  20.11.2007 - 77 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026