Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

In verknüpfte Tabelle per VBA Feld einfügen

67 views
Skip to first unread message

Karl-Alfred Römer

unread,
Nov 18, 1999, 3:00:00 AM11/18/99
to
Hallo,

gibt es eine elegante Methode, wie man in eine verknüpfte Tabelle (in
einem Backend) per VBA vom Frontend Felder hinzufügen, Indizes,
Beziehungen definieren etc. kann ?

Meine jetzige Idee wäre, die Tabelle zunächst mit TransferDatabase zu
importieren, sie 'vor Ort' zu ergänzen und dann wieder zu exportieren.
Ist aber ein wenig zu umständlich.
Wenn mir jemand eine bessere Lösung bieten könnte, würde ich mich
sehr freuen.

Ciao
Karl-Alfred Römer

Udo Schaaf

unread,
Nov 19, 1999, 3:00:00 AM11/19/99
to
Hallo Karl-Alfred,
Um ein Feld in einer eingebundenen Tabelle hinzuzufügen, mußt Du die
Orginal-Datenbank öffnen (opendatabase mit dem Dateinamen, siehe Hilfe).
Dort kannst Du dann in der gewünschten Tabledef ein Field anhängen.
Gruß, Udo

Norbert Kammer

unread,
Nov 19, 1999, 3:00:00 AM11/19/99
to
Karl-Alfred Römer schrieb:

Öffne doch die Backend - Datenbank im Frontend mit
set dbBackend = opendatabase("Backend.mdb")
dann kannst du ganz normal auf die Objekt - Hierarchie zugreifen.

Problematisch könnten die Zugriffsrechte werden, wenn die entsprechende
Tabelle von diesem oder anderen Frontends geöffnet ist.

Norbert


Sub NeuesFeld()
Dim dbBackend As Database, tdf As TableDef, fld As Field

Set dbBackend = dbEngine(0)(0).opendatabase("Backend.mdb")
Set tdf = dbBackend.TableDefs("WasWeisIch")
Set fld = tdf.CreateField("NeuesFeld", dbText, 20)
tdf.Fields.Append fld
tdf.Fields.Refresh
Set dbs = Nothing
End Sub

Stefan Zeller

unread,
Nov 19, 1999, 3:00:00 AM11/19/99
to
>Öffne doch die Backend - Datenbank im Frontend mit
> set dbBackend = opendatabase("Backend.mdb")
>dann kannst du ganz normal auf die Objekt - Hierarchie zugreifen.


Solltest Du zur Laufzeit nicht wissen, wo das Backend ist, so ist das kein
Problem!
So ganz nebenbei kennt Dein Frontend den Zugriffspfad zur Tabelle im
Backend.

Schau mal in die Tabelle MSysObjects rein, da steht Deine Tabelle drin und
wie auf die Tabelle zugegriffen werden kann (ich liebe die MSysObjects ;).
Die Systemobjekte kannst Du bei den Optionen, Ansicht zuschalten.


Es stellt sich natürlich die Frage, warum Du Felder nachprogrammieren mußt.
Hilft es Dir vielleicht schon, die ggf. temporäre Änderung in einer weiteren
DB
vorzunehmen?


Gruß
Stefan

Karl-Alfred Römer

unread,
Nov 19, 1999, 3:00:00 AM11/19/99
to
Hallo Stefan

>Es stellt sich natürlich die Frage, warum Du Felder nachprogrammieren mußt.
>Hilft es Dir vielleicht schon, die ggf. temporäre Änderung in einer weiteren
>DB vorzunehmen?

Nein, im Moment ist ja noch alles in Ordnung, aber es wird sich mit
Sicherheit ergeben, daß beim einen oder anderen Update Felder im
Backend hinzugefügt oder geändert werden müssen.

Wie meinst du das eigentlich mit temporären Änderungen in einer
weiteren DB ? Eine weitere DB öffnen, die tabellen mit den fehlnenden
Feldern enthält, wobei diese Tabellen dann über 1:1 Beziehungen
verknüpft werden ?

Danke für deine Hilfe

Karl-Alfred Römer

Karl-Alfred Römer

unread,
Nov 19, 1999, 3:00:00 AM11/19/99
to
Hallo Norbert,

wie es aussieht ist deine Methode noch die unkomplizierteste.
Muß ich nur noch Sicherstellen, daß in dem Moment, indem ich das
Backend modifizeren will, das Frontend vom Backend getrennt ist, und
daß niemand anderes das Backend geöffnet hat.

Danke für deinen Tip
Karl-Alfred Römer

>> gibt es eine elegante Methode, wie man in eine verknüpfte Tabelle (in
>> einem Backend) per VBA vom Frontend Felder hinzufügen, Indizes,
>> Beziehungen definieren etc. kann ?
>>
>> Meine jetzige Idee wäre, die Tabelle zunächst mit TransferDatabase zu
>> importieren, sie 'vor Ort' zu ergänzen und dann wieder zu exportieren.
>> Ist aber ein wenig zu umständlich.
>> Wenn mir jemand eine bessere Lösung bieten könnte, würde ich mich
>> sehr freuen.
>>
>> Ciao
>> Karl-Alfred Römer
>

>Öffne doch die Backend - Datenbank im Frontend mit
> set dbBackend = opendatabase("Backend.mdb")
>dann kannst du ganz normal auf die Objekt - Hierarchie zugreifen.
>

Stefan Zeller

unread,
Nov 22, 1999, 3:00:00 AM11/22/99
to

Karl-Alfred Römer schrieb in Nachricht
<38354ff3...@news.btx.dtag.de>...
>Hallo Stefan

>
>Wie meinst du das eigentlich mit temporären Änderungen in einer
>weiteren DB ? Eine weitere DB öffnen, die tabellen mit den fehlnenden
>Feldern enthält, wobei diese Tabellen dann über 1:1 Beziehungen
>verknüpft werden ?


Nicht ganz, aber vielleicht auch ein netter Denkansatz...

Ich habe des häufigeren mal Probleme gehabt, wenn ich große Datenmengen
für mehrere Auswertungen zusammenfassen mußte, da gab es ab und zu mal
Laufzeitprobleme.
Einmal sollten die Daten auf zwei verschiedene Arten aufbereitet werden.
War ganz einfach: zwei Berichte mit Abfragen. Dann nur noch die Daten
sammeln und ausgeben.
Ups, da sind ja 10000 Datensätze im Backend... kein Problem, stell ´ne
Tischtennisplatte oder Kaffeemaschine daneben ;)

Das Ganze habe ich dann etwa so gelöst:
beim Öffnen der Berichte habe ich nachgeschaut, ob schon ein Bericht offen
ist. Wenn nicht, dann habe ich die Daten in temporäre Tabellen gelegt.
Alle Berichte haben die tmp-Tabellen genutzt. Beim Schließen der Berichte
habe ich geprüft, ob gerade der letzte Bericht geschlossen wird. Dann habe
ich
die Tabelle geleert.

Die temporären Tabellen habe ich in eine neue Datenbank gelegt
(createdatabase)
und dann eingebunden. Somit brauchte die DB nicht regelmäßig komprimiert
werden.
Natürlich wurde dann nicht die Tabelle geleert, sonder die Datei gelöscht.

Gruß
Stefan

0 new messages