DAO statt ADO

Moderator: ModerationP

DAO statt ADO

Beitragvon Gast » 27. Nov 2020, 10:52

Hallo,
wie muss man den Code für DAO umschreiben?
Code: Alles auswählen
Private Sub Form_Open(Cancel As Integer)
Dim cat As ADOX.CataIog
Dim tblTabInfo As ADOX.TabIe
Set cat = New ADOX .CataIog
cat.ActiveConnection = CurrentProject.Connection
For Each tblTabInfo In cat.TabIes
  With tblTabInfo
    If .Type = "TABLE " Then
    Me!TabeIIenIiste.AddItem.Name

Ich kenne ADO nicht und denke, dass es auch besser ist, DAO zu verwenden oder was spricht für ADO?
VG Kathy
Gast
 

Re: DAO statt ADO

Beitragvon SGast » 27. Nov 2020, 11:43

Hallo,
so lange du in Access bleibst ist DAO (normalerweise) die bessere Wahl.
wie muss man den Code für DAO umschreiben
Das Fragment ist ein bisschen wenig.
Besser wäre auch wohl die Aufgabenstellung zu beschreiben.
Code: Alles auswählen
Dim db As DAO.Database, td As DAO.TableDef
Set db = CurrentDb
For Each td In db.TableDefs
    Debug.Print td.Name
Next


Gruß Steffen
SGast
 

Re: DAO statt ADO

Beitragvon Gast » 27. Nov 2020, 12:23

Hallo,
vielen Dank, Steffen.
Da war nicht mehr viel. Hier alles:
Code: Alles auswählen
Private Sub Form_Open(Cancel As Integer)
Dim cat As ADOX.CataIog
Dim tblTabInfo As ADOX.TabIe
Set cat = New ADOX .CataIog
cat.ActiveConnection = CurrentProject.Connection
For Each tblTabInfo In cat.TabIes
  With tblTabInfo
    If .Type = "TABLE " Then
      Me!TabeIIenIiste.AddItem.Name
    End If
  End With
Next tblTabInfo
Set cat = Nothing
End Sub

Es stammt aus einem Buch. Damit sollte das Ereignis »Open« eingesetzt werden, um ein Listenfeld zu füllen.
VG Kathy
Gast
 

Re: DAO statt ADO

Beitragvon SGast » 27. Nov 2020, 13:19

Hallo,
würde man so in Access eher nicht machen.
Hier müsste man gar nicht programmieren, sondern würde dem Listenfeld ein Abfrage zuordnen.

Aber wenns ums Lernen geht, den DAO.Code habe ich ja gepostet ...

Gruß Steffen
SGast
 

Re: DAO statt ADO

Beitragvon Gast » 01. Dez 2020, 12:13

Hallo,
dem Listenfeld ein Abfrage zuordnen

Ich habe das einmal gemacht.
Eine ungebundene ListBox mit einer Abfrage als Quelle. Sie hat 3 Spalten (1. Spalte: Kürzel (kein PK); 2.Spalte: Plaintext(Info); 3. Spalte: Info)
Das funktioniert.
Jetzt soll in einem RTF-Textfeld txtRTF der Text erscheinen, der beim Klick in die Liste gewählt ist.
Ich habe da alles mögliche versucht. Als Steuerelementinhalt von txtRTF versuche ich:
= lstTest.columns(3). Da werden eckige Klammern gesetzt.
nur lstTest.columns(3) kommt #Name?
Ist man doch auf VBA angewiesen?
VG Kathy
Gast
 

Re: DAO statt ADO

Beitragvon SGast » 01. Dez 2020, 12:42

Hallo,
Code: Alles auswählen
=[lstTest].[Column](2)
sollte funktionieren.

Gruß Steffen
SGast
 

Re: DAO statt ADO

Beitragvon Gast » 01. Dez 2020, 12:52

Hallo,
leider nicht. #Name? wird gezeigt.
Ich habe auch
Code: Alles auswählen
=[me]![lstInfo].[Columns](3)
versucht.
3 deswegen, da dort der RTF-Text steht und bei txtRTF der RTF-Typ eingestellt ist.
VG Kathy
Gast
 

Re: DAO statt ADO

Beitragvon Beaker s.a. » 01. Dez 2020, 12:59

Hallo,
"Me" kennt die Accessoberfläche nicht, - das ist VBA.
Normal sollte
Code: Alles auswählen
=[]![lstInfo].[Columns](3)

funktionieren.

gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1056
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: DAO statt ADO

Beitragvon SGast » 01. Dez 2020, 13:10

Hallo,
3 deswegen, da dort der RTF-Text steht und bei txtRTF der RTF-Typ eingestellt ist.
Nein 2 ist schon richtig (für die 3. Spalte).

Gruß Steffen
SGast
 

Re: DAO statt ADO

Beitragvon Gast » 01. Dez 2020, 13:27

Hallo,
wahrscheinlich hast du Recht wegen Nullbasiert.
Aber es hilft nicht: #Name?
Daran dass die Listbox ungebunden ist, kann es doch auch nicht liegen?! Die Bezeichner stimmen.
Frage mich inzwischen, wie txtRTF mitbekommt, wenn in die Liste geklickt wird. Ist doch VBA nötig?
Aber Aktualisieren hilft auch nicht.
VG Kathy
Gast
 

Re: DAO statt ADO

Beitragvon SGast » 01. Dez 2020, 14:05

Hallo,
Daran dass die Listbox
Wir reden aber schon von einem Listenfeld.

Code: Alles auswählen
=[lstTest].[Column](2)
Dies hast du in den Steuerelementinhalt eines Textfeldes geschrieben?

Listefeld und Textfeld liegen im gleichen Formular?

Ansonsten hilft wohl nur eine BespielDB hochladen.

Gruß Steffen
SGast
 

Re: DAO statt ADO

Beitragvon knobbi38 » 01. Dez 2020, 14:43

Hallo Kathy,

wenn ein "?NAME" angezeigt wird, stimmen die Bezeichner nicht, entweder der Name der Listbox oder der Eigenschaftsname. Die Eigenschaft heißt übrigens "Column".

Beispiel für eine absolute Referenzierung:
"=Forms!Formularname!Listboxname.Column(1)"

und für den Index gilt:
lt. Access-Hilfe hat geschrieben:Ein Wert vom Typ Long Integer, der zwischen 0 und der Einstellung der ColumnCount-Eigenschaft minus 1 liegen kann.


Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2798
Registriert: 02. Jul 2015, 14:23

Re: DAO statt ADO

Beitragvon kathyv » 01. Dez 2020, 16:35

Hallo,
läuft jetzt super :D
Danke an alle, die geholfen haben.
Es lag an dem s in columns. Sorry, dass ich das immer überlas, aber ich hatte es früher schon einmal richtig und der Fehler kam. Auch jetzt, nachdem es gelöscht wurde , kam aber immer noch #Name?
Dann wurde absolut adressiert und damit ging der Fehler weg.
Dann wurde relativ adressiert und es läuft auch. Wahrscheinlich hatte ich noch einen falschen Bezeichner.
=[]![lstInfo].[Column](2) oder =[lstInfo].[Column](2)
Aber zurück zur früher gestellten Frage.
In dem anfangs gezeigten Code ist ja eine Schleife, um alle Tabellen im Projekt zu erfassen.
Code: Alles auswählen
For Each td In db.TableDefs...

@Steffen
Hier müsste man gar nicht programmieren, sondern würde dem Listenfeld ein Abfrage zuordnen.

Kann man wirklich eine Abfrage erstellen, um alle Tabellen im Projekt ohne VBA zu bekommen?
VG Kathy
kathyv
Neuling
 
Beiträge: 2
Registriert: 01. Dez 2020, 14:50

Re: DAO statt ADO

Beitragvon knobbi38 » 01. Dez 2020, 16:41

Hallo Kathy,

erstelle die eine Abfrage:
Code: Alles auswählen
select MSysObjects.name
from MSysObjects
where
   MSysObjects.type In (1,4,6)
   and MSysObjects.name not like '~*'   
   and MSysObjects.name not like 'MSys*'
order by MSysObjects.name

und nehme diese als Rowsource für deine Listbox.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2798
Registriert: 02. Jul 2015, 14:23

Re: DAO statt ADO

Beitragvon kathyv » 01. Dez 2020, 17:01

Hallo,
danke. Habe ich geschafft.
Kann man auch verknüpfte gesondert erfassen? Da sind nämlich welche mit blauem Pfeil.
VG Kathy
kathyv
Neuling
 
Beiträge: 2
Registriert: 01. Dez 2020, 14:50

Nächste

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste