Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Tabelle / Abfrage mit VB erstellen

Begonnen von smily68, Februar 02, 2013, 10:01:40

⏪ vorheriges - nächstes ⏩

smily68

Hallo

Ich möchte eine Tabelle sowie eine Abfrage mit VB erstellen. Mit dem Code den ich geschrieben habe, passiert nichts. Kann mir jemand helfen?


Tabelle:
Dim db As Database
Dim td As TableDef
Dim fld As Field

Set db = CurrentDb
Set td = db.CreateTableDef()
td.Name = "Tabelle"
Set fld = td.CreateField("Vorname", dbText, 30)

Abfrage:
    Dim qd As QueryDef

    Set db = CurrentDb()
    Set qd = db.CreateQueryDef("qryTest", "SELECT * From tblAusleiSelekt WHERE ausleih_User_IDF = 1")

MzKlMu

Hallo,
und zu was brauchst Du das?
In einer DB sollte es im Regelfall nicht notwendig sein Tabellen und Abfragen per VBA zu erstellen.


PS:
In Access gibt es kein VB, sondern nur VBA, VB ist etwas anderes.
Gruß Klaus

ebs17

#2
@smily68: Da fehlen Append-Anweisungen.
Vergleiche Strukturänderungen an der Datenbank

@MzKlMu: Ich kenne durchaus einige sinnvolle Fälle, wo man selber gezielt Tabellen anlegt - wenn per Standardimport (XL, TXT, XML) eine Importtabelle angelegt wird, hält sich die Aufregung auch in Grenzen, wobei solche Fälle kritischer zu beurteilen sind (am Ende werden ja eine Tabelle und deren Daten kopiert, und dann auch nur für eine temporäre Nutzung).

a) Strukturpflege eines Backends über ein Script, weil man z.B. den zeitlichen exklusiven Zugriff auf ein Netzwerkbackend recht kurz halten will oder Backends pflegen lassen will, zu denen man keine Verbindung hat (externe Lösungen).
b) Anlegen eines temporären Backends mit einer geeigneten Struktur, um über Ablage von Zwischenergebnissen zu einer Performanceverbesserung bei komplexeren Aufgaben zu kommen.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo,
@ebs
Dass das sinnvoll sein kann, ist mir durchaus bewusst. Ich habe ja auch geschrieben im Regelfall wäre es nicht notwendig.
Wobei man natürlich auch definieren müsste, was der Regelfall ist.

Ich wollte ja nur wissen wozu, weil es sich auch zeigt, dass ein solches Vorhaben oftmals der falsche Weg ist und das Hinterfragen für den Fragesteller durchaus lohnend sein könnte.
Gruß Klaus

smily68

Hallo

Ich brauche nur eine temporäre Tabelle, so habe ich meinem Accessbuch nachgeschaut und versucht dies nachzubauen. Nun habe ich habe es wie folgt gelöst. Ich habe eine fixe Tabelle erstellt, sowie eine Abfrage welche ich mit einem Code jeweils anpasse. Doch nun habe ich meiner Lösung ein neues Problem.

Me!sfrAusleih.Form.RecordSource = ("SELECT * FROM qryAusleihSelect" 'WHERE ausleih_User_IDF = " & Me!cboUser)

Bei diesem Code kommt mir folgende Fehlermeldung:

Objekt und Klasse unterstützt diese Ereignismenge nicht. Ich habe diesen Code schon in einem anderen Teil meiner Datenbank erfolgreich eingesetzt.
Könnt ihr mir helfen?

Gruss Daniel

DF6GL

Hallo,

nur Syntax des SQL-Strings betrachtet:


Me!sfrAusleih.Form.RecordSource = ("SELECT * FROM qryAusleihSelect  WHERE ausleih_User_IDF = " & Me!cboUser)


smily68

Hallo

Ich habe nicht den richten Code ins Forum gestellt, es war ein Code an dem getestet habe: Hier der richtige Code bei dem die gleiche Meldung kommt:

    Me!sfrAusleih.Form.RecordSource = ("SELECT * FROM qryAusleihSelect WHERE ausleih_User_IDF = " & Me!cboUser)

Meldung: Objekt oder Klasse unterstützt diese Ereignismenge nicht

Gruss Daniel

DF6GL

Hallo,


ok,

lass zunächst noch diese Klammern weg :

Me!sfrAusleih.Form.RecordSource = "SELECT * FROM qryAusleihSelect WHERE ausleih_User_IDF = " & Me!cboUser

sodann: was ist "sfrAusleih"  genau?

smily68

Hallo

sfrAusleih ist der Name des Steuerelements (Unterformular). sfrAusleih ist auch der Name des Unterformulares welches als Datenquelle qryAusleihSelect hat.
Sinn des Ganzen: Die Datenbank ist ein Bibliothekprogramm. Im Formular frmAusleih / sfrAusleih werden die Bücher erfasst, die ausgelehnt werden möchten. Mit einem Button werden die Daten des entsprechenden  Ausleihers selektiert. (Dies passiert mit meinem Code) und anschliessend in eine andere Tabelle als gebucht geschrieben. Die selektierten Datensätze werden anschliessend in dieser Tabelle (tblAusleiSelect) gelöscht.

Gruss Daniel

DF6GL

Hallo,

ich befürchte da ein suboptimales Tabellen-/ bzw. Ablaufkonzept...


Ich nehme an, im Hauptform werden die Ausleiher angezeigt, im Unterform die vom akt. angezeigten Ausleiher ausgeliehenen Bücher.


Wenn so, dann setze die Datenherkunft des UFOs auf die Tabelle "tblAusleiherBücher"  und verknüpfe (UFO-Eigenschaften "Verknüpfen von/nach") das UFO über die entspr. Schlüsselfelder.


smily68

Hallo

Der Aufbau ist nicht ganz so wie du dir denkst. Mein Formular ist ein Erfassungsformular für die neuen Bücher die ausgelehnt werden. Beim Oeffnen muss das Formular leer sein. Danach wird der Entsprechende Name (Ausleiher) ausgewählt (das geschieht mit einem Kombifeld) danach können die Bücher ausgewählt werden. Mit einem Button wird die Aktion als Ausgeliehen abgeschlossen. Dies ist der Prozess den ich oben beschrieben habe.

Meine Fehlermeldung steht aber aus meiner Sicht nicht im Zusammenhang mit dem Datenmodel. Auf was weisst diese Fehlermeldung hin, was könnte ich falsch gemacht haben?

Gruss Daniel

DF6GL

Hallo,


"Der (Tabellen-)  Aufbau ist nicht ganz so wie du dir denkst. "
dann erklär ihn ...  ;)

"Mein Formular ist ein Erfassungsformular für die neuen Bücher die ausgelehnt werden."

Ok...


"Beim Oeffnen muss das Formular leer sein."

Ok, wenn Du das so willst.


"..danach können die Bücher ausgewählt werden."

Wie geschieht das? Auch mittels Kombifeld?


"Mit einem Button wird die Aktion als Ausgeliehen abgeschlossen."

Was passiert beim Klick auf diesen Button  (Code) ?



"Meine Fehlermeldung steht ..nicht im Zusammenhang mit dem Datenmodel."

das will ich jetzt nicht unterschreiben...  Formulare bauen auf Tabellen(strukturen) auf und funktionieren nur dann, wenn eben die Tabellenstrukturen in sich schlüssig sind.  Zum Anderen manipulierst Du Eigenschaften von Formularen, die auch von Access unter Umständen (die eben jetzt noch unbekannt sind) "bearbeitet" werden, z. B. die "Verknüpfen von/nach"-Eigenschaften eines UFO-Steuerelementes.     


Die Fehlermeldung sagt lediglich aus, dass die Zuweisung/Ausführung des Strings nicht bearbeitet werden kann.  Die Ursache dafür  ist daraus nicht direkt abzulesen.



Lad die DB hoch, dann könnte besser analysiert werden.