MS Access SQL Tabelle hinzufügen ohne GUI zu nutzen

Midivirus
Guten Morgen liebe Gemeinde!

Da immer wieder kommende MDB geändert werden müssen, kann dies praktisch in ein SQL eingebaut werden.

Folgendes:
Es soll eine Tabelle mit einer weiteren Spalte ergänzt werden.

[funktioniert]

Jetzt möchte ich aber noch festlegen, dass der Standartwert "Jetzt()" ist.

[Syntaxfehler in ALTER TABLE-Anweisung]


Falls dies in Access nur über die GUI möglich ist, schade!


Nachtrag:
in Postgres SQL geht es so


Euer
Midi


Quellen:
http://www.teialehrbuch.de/Kostenlose-Kurse/SQL/14689-ALTER-TABLE.html
http://sqlzoo.net/de/howto/source/z.dir/i02create.xml

Content-Key: 192659

Url: https://administrator.de/contentid/192659

Ausgedruckt am: 25.01.2022 um 09:01 Uhr

Mitglied: thaenhusen
thaenhusen 12.10.2012 um 10:11:16 Uhr
Goto Top
Moin.

Ich gehe Mal davon aus, dass Du das ganze in VBA machen willst.


HTH
MK
Mitglied: filippg
filippg 13.10.2012 um 00:09:43 Uhr
Goto Top
Hallo,

ich weiß nicht, welchen SQL-Dialekt Access spricht. Aber bei T-SQL (MS) heißt es "GETDATE()" und nicht "NOW()".

[Syntaxfehler in ALTER TABLE-Anweisung]
Das Posten von vollständigen Fehlermeldungen kann hilfreich sein...

Gruß

Filipp
Mitglied: Biber
Biber 13.10.2012 aktualisiert um 16:04:00 Uhr
Goto Top
Moin Midivrus, thaenhusen und filippg

die Frage lässt sich am besten ausgehend von Filipps Frage beantworten.

Zitat von @filippg:
ich weiß nicht, welchen SQL-Dialekt Access spricht.
Aber bei T-SQL (MS) heißt es "GETDATE()" und nicht "NOW()".
Access spricht nach wie vor kein ANSI-SQL, nicht mal im Sinne von SQL-92 (und inzwischen ist SQL-2012 abgenickt).
In Access ist nach wie vor die Engine von den Konzepten und eben auch von den Grenzen des DAO-Modells (Data Access Objects) bestimmt. Was "früher" bei Access-MDBs Standard war, DAO hiess und bei Access 2000/2002 für tot erklärt wurde, nennt sich jetzt seit Access 2007 "Access Database Engine Object Library (Dateiname: ACEDAO.DLL)" und ist das olle DAO-Konzept.

Die eigentlich geeignete Architektur wäre wohl ADO (ActiveX Data Objects), kommt aber bei M$ nicht aus dem Quark (grottige Performance, abgespeckter Sprachumfang und vor allem bei Katalog/Datenbank-Verwaltungsfunktionen so gut wie nicht vorhanden). ADO ist zwar als Modell eher auf einer Linie, die besonders bei DDLs näher an der Mimik eines Standard-SQL-Sprachumfangs liegt.... soweit die gute Nachricht.
Von der Implementierung her allerdings ist alles, was Tabellen bzw Datenobjekte created oder altered nicht in DAO und nicht in ADO vollständig implementiert, sondern in einer Zusatzbibliothek (ADOX).

Bedeutet unterm Strich ganz banal:
[Syntaxfehler in ALTER TABLE-Anweisung]
bei einem ALTER TABLE add whatever date DEFAULT now()
-> nicht etwa das "now()" ist das Problem, sonder ganz einfach das unbekannte Schlüsselwort "DEFAULT".

DEFAULT wird weder bei einem CREATE TABLE noch einem ALTER TABLE außerhalb der Access-Klicks-Zsamma-Oberfläche unterstützt.
Also auch nicht bei Zugriffen von aussen - egal ob über ODBC, JBDC, DAO- oder ADO-Objekte, über VBA oder VBS.

Der einzige Weg (um nicht workaround zu schreiben) ist die von thaenhusen gezeigte Lösung.

Grüße
Biber
Mitglied: Midivirus
Midivirus 16.10.2012 um 14:31:31 Uhr
Goto Top
Grüßt euch,

die Mailbenachrichtigungen sind von GMX als SPAM deklariert worden
[Lob in die Richtigung]!


Prinzipiell machen wollte ich es mit PHP!

@@filippg:
Das Posten von vollständigen Fehlermeldungen kann hilfreich sein...
Access gibt halt coolerweise nur immer diese Meldung!!!

@@Biber: besten Dank!



Wenn ich richtig interpretiert habe, komme ich um den letzten Schritt nicht herum, die Standardwerte manuell zuhinterlegen?


angenehmen Resttag,
Midi
Mitglied: Biber
Biber 17.10.2012 aktualisiert um 23:08:52 Uhr
Goto Top
Moin Midivirus,

ich war nicht sicher, ob deine Nachfrage eine rhetorische war.
Da aber nun Tage später kein "Hinreichend beantwortet"-Marker am Beitrag klebt, bestätige ich gerne nochmals die Richtigkeit deiner Interpretation.

Anmerkung 1)
Eine programmierte Lösung über PHP kannst du aus den genannten Gründen knicken. Du bekommst zwar problemlos eine Connection zur Access-Datenbank hin. Aber mit der kannst du nur Access-SQL sprechen. Und das kennt kein ALTER TABLE add/alter COLUMN DEFAULT .... Das können nur die Objekt-Modelle (wie DAO) mit ihren DLLs und ihren TableDef-Objekten.

Wenn thaenhusen ganz (über-)korrekt gewesen wäre, dann hätte er statt seiner Variablendeklaration geschrieben:
-> dann wäre vielleicht deutlicher geworden, dass hier "Properties" eines hierachischen Objekt-Modells geändert werden - nicht etwa über ein SQL-UPDATE Katalogfelder einer Tabellenbeschreibung. Hat Access nicht. Deshalb kannst du auch im ACCESS-SQL keine Abfrage "Liste mir alle Tabellen im Schema" oder "Liste mir alle Felder in Table xy" machen.

Anmerkung 2)
Um es nochmals ganz deutlich zu sagen: Access war nie ein strategisches M$-Produkt und wird es nie werden dürfen. Die Redmonder möchten, dass alles, was in Richtung wartbare, halbprofessionelle, mehrbenutzerfähige Datenbank geht auf einem SQL-Server läuft. Deshalb bekommt auch jeder Privatanwender einen SQL-Server für lau und bei Marketingaktionen noch einen vollgetankten Rasenmäher dazu.

Eine Access-Applikation macht auch unter Performance-Gesichtspunkten nur Sinn, wenn die Appz-Logik in VBA zusammengeschrotet wird. Denn nur DAO-Zugriff via VBA ("Direct DAO") hat das Privileg, den selben Adressraum benutzen zu dürfen wie die Anwendung "Access". Das darf weder ADO.Net noch ODBC noch JDBC noch alle anderen. Zusammengefasst als zwei Einzelaussagen:
- alle Zugriffe außer Direct DAO müssen wesentlich mehr Disk I/O und ein paar Abstraktionsebenen mehr in Kauf nehmen
- und alle anderen haben zusätzlich einen künstlich eingeschränkten SQL-Sprachumfang.

Noch kürzer zusammengefasst: Access-Datenbanken sind Insellösungen.

Und im Zuge der globalen Klimaerwärmung sind viele Inseln dem Untergang geweiht.

Grüße
Biber
Mitglied: Midivirus
Midivirus 18.10.2012 um 08:21:59 Uhr
Goto Top
@@Biber:
Das Lob war an GMX gerichtet, die die Benachrichtigungen neuerdings als SPAM einstufen. (...)

Für mich reicht die Aussage
Eine programmierte Lösung über PHP kannst du aus den genannten Gründen knicken.

Für mich ist diese Frage an dieser Stelle dann erl.!


Vielen lieben Dank für eure Mühen und wieder herrlich,
qualifizierte Antworten zulesen, Dank DAFÜR.



>Midi<
Mitglied: Midivirus
Midivirus 24.10.2012 um 09:19:51 Uhr
Goto Top
Quelle: http://www.shotdev.com/php/php-adodb/php-adodb-get-table-properties/


Damit hab ich mein Ziel erreicht:
Prüfung ob die Spalte schon vorhanden ist, wenn nein, anlegen

-Beitrag und Problem gelöst-
Heiß diskutierte Beiträge
question
Ist diese Hardware sinnvoll für privaten Haushalt?stonevVor 1 TagFrageRouter & Routing5 Kommentare

Hallo erstmal :) Meine alte Fritzbox 7490 spinnt seit gestern. Ich gehe von Alterschwäche aus, es wird also Ersatz fällig. Zufrieden war ich mit ihr ...

question
LTO-5 Bänder Löschen geht nichtkreuzbergerVor 1 TagFrageBackup23 Kommentare

Hallo ihr Helden, ich hab da ein blödes Problem: Ich habe einen Stapel gebrauchte LTO-5-Bänder bekommen, die soweit völlig i. O. sind. Mit welchem Programm ...

question
Teilenummer für weiße Esprimo Mini-PC?LochkartenstanzerVor 1 TagFrageHardware21 Kommentare

Moin, Ich habe eine eigenwillige Kundin, die einen weißen Fujitsu Esprimo Mini-PC haben will. Und der Kundin ist, wie sollte es anders sein, die Farbe ...

question
Suche einen 27 Zoll 4K Monitor mit einer Energieklasse von A-CWolf6660Vor 2 TagenFrageGrafikkarten & Monitore3 Kommentare

Hi, ich bin auf der suche nach zwei 27 oder 28´´4K Monitor. Da ich diesen täglich mehrere Stunden benutzt bin ich auf der Suche nach ...

question
Ein Smartphone für privat und geschäftliche NutzungNebellichtVor 1 TagFragePeripheriegeräte5 Kommentare

Hallo, für die Firma werden aktuell Smartphone(s) gesucht, die da eine Dual Sim ermöglichen und zusätzlich trennende Sicherheit, d.h. ein Trennen von privaten Daten und ...

question
Tipp für Firewall mit mehreren DHCP-Instanzen für VLAN gesucht gelöst Holly484Vor 21 StundenFrageFirewall5 Kommentare

Hallo zusammen, hatte in einer Gemeinschaftspraxis bisher tolle Erfahrungen mit Netgear über die letzten vielen Jahre gesammelt. Jetzt ist Netgear aus dem Firewall-Business ausgestiegen. Bisher ...

question
Suche nach "Beschreibung"ThabeusVor 1 TagFrageVmware11 Kommentare

Moin, ich stehe gerade auf dem Schlauch bei der Suche nach einer Anleitung. Vielleicht kann mir jemand helfen die "Begrifflichkeit" zu finden. In meinem Netzwerk ...

question
User verschickt mit kryptischer Outlook.com Adresse aus on-prem Exchange 2016LauneBaerVor 1 TagFrageExchange Server10 Kommentare

Servus in die Runde, ich habe ein für mich nicht nachvollziehbares Problem bei einem User, das heute zum 2ten mal aufgetreten ist. Und zwar verschickte ...