![]() |
Automatische Felder in der Access-DB erzeugen
Hallo Leute, wie kann ich, wenn ich eine Access-DB habe, und ich aber einige Felder vergessen habe, die aus meinem Programm automatisch hinzufügen?
Es soll so sein, dass wenn ein User das Update meines Programmes installiert und dann im Menüpunkt auf 'Aktualisieren' klickt, dass dann automatisch einige Felder in einer Tabelle in der Datenbank erstellt werden, damit dann das Programm auch richtig läuft und der User auch zugriff auf die Felder hat? Grund ist der, da ja einige User schon das Programm haben und ich jetzt ein Update machen möchte. Dafür fehlen jetzt aber einige Felder in der Access-DB. Kann man das überhaupt? Und wenn ja, Wie? |
Hallo,
ich habe es mit Access noch nicht Probiert, aber generell sollte das kein Problem sein. Du musst auf jeden Fall den Exclusiven Zugriff auf die Tabelle haben (es darf also keine zweite Connection bestehen). Danach fährst du ein Querry das so aufgebaut ist:
Code:
Wenn du pech hast können die Felder bei Acces nur einzeln hinzugefügt werden. In dem Fall musst du es in zwei Querys aufteilen:
ALTER TABLE tabellenname ADD
( Alter NUMERIC Nummernschild CHAR(20) )
Code:
Gruß
ALTER TABLE tabellenname ADD Alter NUMERIC
ALTER TABLE tabellenname ADD Nummernschild CHAR(20) Klabautermann |
Hi, und wie kann ich das mit einem Button verbinden?
Ich möchte auf den Button klicken, und dann sollen die Felder in der Datenbank erzeugt werden. Und weiters soll man, sobald diese erzeugt sind, darauf zugreifen können. |
Hallo m-werk,
das Statement der SQL Eigenschaft einer TQuery Komponente hinzufügen. Die TQuery Komponente mit der Datenbank verbinden. Dann dem OnClick - Ereignis des Schalters den Code:
Code:
hinzufügen, wobei du den Namen qryAdd durch den Namen der o.g. TQuery Kompo ersetzen muss.
qryAdd.ExecSQL;
|
Hi, ich habe jetzt alles so gemacht, aber nun kommt, wenn ich den Button betätige eine Meldung: Syndaxfehler in Felddefinition.
Ich habe schon vorgefertigte Tabellen in der Access. Ich möchte in der Tabelle 'Kinder' eineFeld 'Zusatz' hinzufügen, der ein Text sein soll. Weiters möchte ich noch ein Feld 'XY' hinzufügen, der eine Zahl sein soll. Ich komm nicht dahinter, wie die SQL eigenschaft heißen soll. |
Hallo m-werk,
wann kommt denn der Syntax Fehler? Der SQL String sollte lauten:
Code:
und ggf. eine zweite Anweisung:
ALTER TABLE Kinder ADD Zusatz CHAR(20)
Code:
Die entsprechende TQuery Kompo muss natürlich mit der Datenbank verbunden sein und kein anderer sollte zu dem Zeitpunkt auf die Daten zugreifen.
ALTER TABLE Kinder ADD XY NUMERIC
|
So, ich habe es jetzt geschaft.
Ich habe aber bemerkt, dass ich immer nur einen String verwenden kann. Ich muß aber 9 Felder hinzufügen. Muß ich jetzt 9 Querys machen? Oder kann ich das irgendwie in einer einzigen auch machen? Weiters muß ich ein Feld hinzufügen, dass wie folgt aussehen muß: Feldname: Rundung Felddatentyp: Zahl Feldgröße: Double Format: Standartzahl oder Euro Dezimalstellenanzeige: 3 Wie bekomme ich das hin? |
Hallo m-werk,
das Feld kannst du mit:
Code:
Dabei ist es auch denkbar FLOAT oder MONEY zu nutzen. Letzteres hat aber nur 2 Nachkommastellen.
ALTER TABLE Kinder ADD Rundung NUMERIC
Du kannst übrigens alles nacheinander in dieselbe TQuery Komponente schreiben. Die SQL Eigenschaft einfach mit Clear löschen, neu setzen und mit ExecSQL ausführen. Formate kannst du in Delphi über die Field Komponente einstellen, die du über den Feldeditor hinzufügen kannst. Das Format über SQL so einzustellen, dass es beim Öffnen der DB in Access wie von dir gewünscht angezeigt wird, geht nicht. |
Hi, also geht das einstellen vom Format wie z.B. 'Standartzahl oder Euro' nicht.
Was bedeutet FLOAT und MONEY? Money ist mir eigentlich klar. Wie setze ich die in die SQL dazu? Wie siehts eigentlich mit einem Ja/Neit Wert aus? Wie soll ich das mir 'Clear' lösen? Naja, viele fragen aber ich will es ja lernen. Ich werde mir noch diese Woche das Buch 'Datenbankprogrammieren in Delphi 6 kaufen'. Was hälst du davon? Ich glaube, dann wird mir auch einiges klar. Find ich in diesem Buch auch solche Beispiele, wie ich sie in diesem Forum poste? |
Hallo m-werk,
das mit dem Buch ist eine gute Idee. Ich denke, wenn man Datenbankprogrammierung benötigt, sollte man den Grundlagen anfangen und da ist ein gutes Buch viel Wert. Man kann dann auch später gewisse Details einfach noch einmal nachschlagen. Zitat:
Zitat:
Zitat:
Zitat:
Code:
Dabei sollte der Array InsertStr die neun verschiedenen SQL Statements enthalten, also:
for i := 1 to 9 do
begin qryInsert.Close; qryInsert.SQL.Clear; qryInsert.SQL.Add(InsertStr[i]); qryInsert.ExecSQL end; InsertStr[1] := 'ALTER TABLE Kinder ADD XY NUMERIC'; InsertStr[2] := ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz