AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Automatische Felder in der Access-DB erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische Felder in der Access-DB erzeugen

Ein Thema von m-werk · begonnen am 9. Sep 2002 · letzter Beitrag vom 1. Okt 2002
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#1

Automatische Felder in der Access-DB erzeugen

  Alt 9. Sep 2002, 14:14
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?
Grüße, m-werk
  Mit Zitat antworten Zitat
Klabautermann

Registriert seit: 22. Jun 2002
Ort: Münster (NRW)
63 Beiträge
 
#2
  Alt 9. Sep 2002, 14:38
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:
ALTER TABLE tabellenname ADD
 (
  Alter NUMERIC
  Nummernschild CHAR(20)
 )
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:
Code:
ALTER TABLE tabellenname ADD Alter NUMERIC
ALTER TABLE tabellenname ADD Nummernschild CHAR(20)
Gruß
Klabautermann
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#3
  Alt 12. Sep 2002, 14:18
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.
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4
  Alt 12. Sep 2002, 15:28
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:
qryAdd.ExecSQL;
hinzufügen, wobei du den Namen qryAdd durch den Namen der o.g. TQuery Kompo ersetzen muss.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#5
  Alt 13. Sep 2002, 18:30
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.
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6
  Alt 13. Sep 2002, 20:42
Hallo m-werk,

wann kommt denn der Syntax Fehler?

Der SQL String sollte lauten:

Code:
ALTER TABLE Kinder ADD Zusatz CHAR(20)
und ggf. eine zweite Anweisung:
Code:
ALTER TABLE Kinder ADD XY NUMERIC
Die entsprechende TQuery Kompo muss natürlich mit der Datenbank verbunden sein und kein anderer sollte zu dem Zeitpunkt auf die Daten zugreifen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#7
  Alt 14. Sep 2002, 17:40
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?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8
  Alt 16. Sep 2002, 20:55
Hallo m-werk,

das Feld kannst du mit:

Code:
ALTER TABLE Kinder ADD Rundung NUMERIC
Dabei ist es auch denkbar FLOAT oder MONEY zu nutzen. Letzteres hat aber nur 2 Nachkommastellen.

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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#9
  Alt 17. Sep 2002, 07:11
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?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#10
  Alt 17. Sep 2002, 07:39
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:
also geht das einstellen vom Format wie z.B. 'Standartzahl oder Euro' nicht.
Solange du über die BDE auf eine Datenbank zugreifst, musst du dich mit "Loacal SQL" begnügen, was eine Untermenge des ANSI-SQL Standards ist. Die Angabe, wie Access Daten aus der Datenbank in einem Formular oder der Tabellenansicht darstellt, kann nicht über SQL festgelegt werden, sondern nur über die Oberfläche selbst. Zeigst du aber den Inhalt der DB in Delphi Komponenten an, kannst du dort das Format z.B. über die Eigenschaft DisplayFormat (siehe Online Hilfe) einstellen.

Zitat:
Was bedeutet FLOAT und MONEY?
Money ist mir eigentlich klar. Wie setze ich die in die SQL dazu?
FLOAT bedeutet einfach nur Gleitkommazahl. Es gibt auch das Format FLOAT(x,y) mit dem man die Genauigkeit der zu speichernden Daten angeben kann. Es ist aber leider so, dass der SQL String an die Datenbank geschickt wird und die diesen dann selbst umsetzt. Und das bedeutet, dass grundsätzlich die Umsetzung unterschiedlich sein kann (z.B. Genauigkeit). Money soll eigentlich 2 Nachkommastellen haben, dBase ersetzt es aber durch Numeric(20,4). Was ich damit sagen will, ist: Probier das Ganze mal mit Access aus und schau dir an, wie Access z.B. MONEY oder FLOAT umsetzt. FLOAT und MONEY sind Typen, die du syntaktisch anstelle von NUMERIC oder CHAR(20) in den o.g. Beispielen benutzen kannst.

Zitat:
Wie siehts eigentlich mit einem Ja/Neit Wert aus?
Das wäre der Typ BOOLEAN. Aber auch hier gilt: Nachprüfen, was die Datenbank daraus macht!

Zitat:
Wie soll ich das mir 'Clear' lösen?
Angenommen deine TQuery heißt qryInsert, dann schreibst du z.B.:

Code:
for i := 1 to 9 do
begin
   qryInsert.Close;
   qryInsert.SQL.Clear;
   qryInsert.SQL.Add(InsertStr[i]);
   qryInsert.ExecSQL
end;
Dabei sollte der Array InsertStr die neun verschiedenen SQL Statements enthalten, also:

InsertStr[1] := 'ALTER TABLE Kinder ADD XY NUMERIC';
InsertStr[2] := ...
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz