# M$ Office Access 2000 SQL-Query



## ctac (8. Oktober 2002)

Hallo Leute.

Weiss den Jemand ob es möglich ist in Access eine SQL-Anweisung ausführen.

z.B. => CREATE TABLE table1 (id int(11) default NULL, name VARCHAR(60) default NULL);

ACCESS 2000

Grüsse
ctac


----------



## Dario Linsky (8. Oktober 2002)

natürlich geht das, die meisten (eigentlich fast alle) heutigen datenbanksysteme basieren schliesslich auf sql. allerdings sieht der sql-dialekt von access etwas anders aus.
am einfachsten ist es, wenn du dir eine tabellenerstellungsabfrage zusammenklickst. dadurch wird im hintergrund der richtige sql-code erstellt.


----------



## ctac (8. Oktober 2002)

*OH JA....*

Coool , danke...
Das problem lag wo anders, momentan programmiere ich Access_DB über ein COM - Interface, o.g. Query sollte an Access weitergegeben werden, das Problem war das Access kein "default" verstand, und somit keine Tabelle erzeugt hat.
Meine Vermututung war darin, dass nur "SELECT FROM *"-Anweisungen im Access möglich sind.

Danke.


----------



## Dario Linsky (8. Oktober 2002)

die sql-anweisungen von access sind leider etwas eingeschränkt. bei der jet-engine (auf der access beruht) lassen sich nur die daten mit sql bearbeiten.
die erstellungsabfragen für neue tabellen sind an sich nur dazu gedacht, werte aus einer bestehenden tabelle in eine neue tabelle einzutragen.

die bearbeitung der datenbankstruktur mit sql als ddl (data definition language) ist unter access nicht möglich. wenn du allerdings über einen programmcode zusätzliche tabellen in access erzeugen willst, kannst du vielleicht über bestimmte objekte oder com-schnittstellen zu access machen. falls du mit ado-komponenten arbeiten kannst, dann hilft dir vielleicht ein adox-objekt weiter.

das problem ist also nicht, dass access mit dem sql-ausdruck "default" nichts anfangen kann, sondern eher, dass sql-anweisungen von access tatsächlich nur mit SELECT, DELETE oder UPDATE beginnen können.


----------



## ctac (8. Oktober 2002)

*Stimmt nicht ganz.*

Stimmt nicht ganz.

Die SQL-Syntax funzt im Access, was ich bis jetzt ausprobiert habe:
CREATE TABLE, DROP TABLE, INSERT, ...
funzt alles ausser CREATE DATABASE  , aber ist es irgendwo auch logisch.....  

Die Syntax unterscheidet sich unwesentlich von der MySQL...
ich bin schon zufrieden damit.. 

Grüsse
Ctac


----------



## Dario Linsky (8. Oktober 2002)

aus irgendeinem grund hat das bisher nie geklappt, wenn ich über ein adodb-objekt in vb so eine tabelle erstellen wollte. access ist wirklich eine ziemlich mysteriöse sache. 

nebenbei: SHOW TABLES bzw. SHOW DATABASES geht auch nicht (zumindest nicht in der form). und CREATE DATABASE kann man über ein adox.catalog-objekt trotzdem ausführen. 

was noch zu beachten wäre: in der sql-syntax steht "int" für den gleichen datentyp, der in der entwurfsansicht der tabellen als "long integer" angezeigt wird.


----------



## ctac (16. Oktober 2002)

*JO, Danke*

Hi, es hat alles wunderbar geklappt.
noch eine optionale Frage:

Kann man mehrere SQL-Anweisungen gleichzeitig abfeuern???
bzw. wie sollte man die verbinden : 

z.B sowas
INSERT INTO ertrag (id, ertrag) VALUES ('420', '4');
INSERT INTO ertrag (id, ertrag) VALUES ('421', '4');
..
INSERT INTO ertrag (id, ertrag) VALUES ('599', '4');

Grüsse


ps: tutorials.de ist 'ne tolle Sache


----------



## Dario Linsky (16. Oktober 2002)

> Kann man mehrere SQL-Anweisungen gleichzeitig abfeuern???


das sollte eigentlich auch gehen. du musst die einzelnen anweisungen halt nur jeweils mit einem semikolon voneinander trennen.
schliesslich kann man eine komplette datenbank ja als textdatei speichern, die voll mit sql-anweisungen ist.

da access aber nicht gerade das schnellste system ist, solltest du vielleicht nicht zu viele anweisungen gleichzeitig an die datenbank schicken, sondern einzeln.
beispielsweise in einer schleife, dann kannst du sogar noch den fortschritt in einer progressbar anzeigen.



> ps: tutorials.de ist 'ne tolle Sache


danke. =)


----------



## ctac (18. Oktober 2002)

Hi



> das sollte eigentlich auch gehen. du musst die einzelnen anweisungen halt nur jeweils mit einem semikolon voneinander trennen.



Eben nicht, bei der Abfrage mit mehr als einer Anweisung 
=> Fehelemeldung. "Zeichen nach Ende SQL Anweisung gefunden.."




> beispielsweise in einer schleife, dann kannst du sogar noch den fortschritt in einer progressbar anzeigen.



das habe ich auch zuerst gemacht, bloss bei mehreren Tausend Anweisungen dauert es bei meinem Programm mehr als 20 sec.

 
 ...
Und wenn die Anweisungen in eine zusammenpacke -> dann verkürzt sich die Zeit auf ca. 2 sek, was schon hinhaut.

Grüsse


----------



## dadudeness (2. April 2008)

Moin,

sorry, daß ich diesen alten Thread ausgrabe, aber er paßt ziemlich gut zu meinem aktuellen Problem.

Es geht um Access 2003.

Um Daten aus einem Haufen CSV-Dateien in eine Access-DB schreiben zu können, habe ich ein Java-Tool geschrieben, das mir die Daten ausliest und gleich die entsprechenden INSERT-SQL-Queries erzeugt. Diese möchte ich jetzt in Access ausführen. Also hab ich unter "Abfragen" eine neue Abfrage erstellt und mehrere INSERT INTO Statements hintereinander reingeschrieben. Jedoch gibt's dann die Fehlermeldung, daß er "Zeichen nach dem Semikolon[...]" gefunden hat.

Kann mir jemand helfen und mir erzählen, wie ich mehrere INSERT-Befehle direkt auf die DB abfeuer, ohne noch ein Script schreiben zu müssen?

Würd mich freuen.

Lieben Gruß aus Hamburg,

Fab


----------

