collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 85
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13910
  • stats Beiträge insgesamt: 65774
  • stats Themen insgesamt: 8873
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen  (Gelesen 1118 mal)

Offline jagger

  • Newbie
  • Beiträge: 42
Hallo Leute,

ich möchte gern in einem ungebundenem Textfeld "SV" alle Werte
(alle Datensätze) einer Spalte aus einer Abfrage anzeigen.
Mit dem Code zeigt er mir immer nur den Wert von einem Datensatz an.
Da muss sicherlich noch eine Schleife rein. Aber wo und wie?
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim var

Set db = CurrentDb               
strSQL = "SELECT * FROM qry_Filter_OrderSaison"   
Set rs = db.OpenRecordset(strSQL)
 
If Not rs.EOF Then rs.MoveFirst
 
Do While Not rs.EOF               
  var = rs!OrderSaison
  rs.MoveNext             
Loop
SV = var

rs.Close
Set rs = Nothing
Set db = Nothing
End Sub

Es ist sicherlichganz einfach, aber ich habe leider keine Lösung gefunden.
Hat jemand eine Idee?

Mit Dank im Voraus
LG
jagger

 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7201
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #1 am: Januar 06, 2018, 19:00:11 »
Hallo,
Zitat
Es ist sicherlichganz einfach,
nein, es ist nicht ganz einfach.
Siehe hierzu:
http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: jagger

Offline Frithjiof

  • Access-User
  • *
  • Beiträge: 74
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #2 am: Januar 06, 2018, 19:07:55 »
Du musst nur den Code bischen anpassen:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim var as String

Set db = CurrentDb               
strSQL = "SELECT * FROM qry_Filter_OrderSaison"   
Set rs = db.OpenRecordset(strSQL)
 
If Not rs.EOF Then rs.MoveFirst
   var=""
Do While Not rs.EOF               
  var =    var & rs!OrderSaison  & vbcrlf
  rs.MoveNext             
Loop
SV = var

rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
Frithjof
 
Folgende Mitglieder bedankten sich: jagger

Offline jagger

  • Newbie
  • Beiträge: 42
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #3 am: Januar 06, 2018, 19:24:23 »
@Frithjiof,
Danke Dir.
Mit dem Code zeigt er leider nur den ersten Wert aus der Abfrage an.

@MzKlMu,
ich probier mal, ob ich da durchsteige.

LG
jagger
 

Offline jagger

  • Newbie
  • Beiträge: 42
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #4 am: Januar 06, 2018, 19:42:00 »
@MzKlMu,

Danke, klappt prima!

LG
jagger
 

Offline Frithjiof

  • Access-User
  • *
  • Beiträge: 74
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #5 am: Januar 06, 2018, 19:49:36 »

Mit dem Code zeigt er leider nur den ersten Wert aus der Abfrage an.

Im von mir angepassten Code müssten in der Variabeln var alle Einträge der Spalte rs!OrderSaison untereinander gelistet sein.

Frithjof

 

Offline jagger

  • Newbie
  • Beiträge: 42
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #6 am: Januar 06, 2018, 20:07:22 »
@Frithjiof,

Zitat
Im von mir angepassten Code müssten in der Variabeln var alle Einträge der Spalte rs!OrderSaison untereinander gelistet sein.

In dem Textfeld "SV"?
Hab ich da was falsch gemacht?
LG
jagger
 

Offline Frithjiof

  • Access-User
  • *
  • Beiträge: 74
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #7 am: Januar 06, 2018, 21:01:49 »
Hallo jagger.

In dem Textfeld "SV"?

In folgender Schleife wird in die Variabel "var" der Text geschrieben:
Do While Not rs.EOF               
   var =  var &  rs!OrderSaison  & vbcrlf
   rs.MoveNext             
Loop
SV = var

Das geht auch direkt ins Textfeld "SV":
  me.SV =""
Do While Not rs.EOF               
   me.SV  =  me.SV  &  rs!OrderSaison  & vbcrlf
   rs.MoveNext             
Loop

Ich wüsste nicht warum das nicht gehen sollte.

Frithjof
 
Folgende Mitglieder bedankten sich: jagger

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 879
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #8 am: Januar 06, 2018, 22:19:36 »
Zitat
Ich wüsste nicht warum das nicht gehen sollte.
Ob etwas geht und ob man das Ergebnis sieht ist zweierlei. Wenn das anzeigende Textfeld in seiner Höhe die durch Zeilenumbrüche auftretenden mehrfachen Zeilen nicht berücksichtigt, hat der Ersteller ein selbstverursachtes Problem. Wenn er einen gezeigten Code nicht 1:1 umsetzen kann, dann auch.

Ansonsten: Codediskussion
Zitat
strSQL = "SELECT * FROM qry_Filter_OrderSaison"   
Set rs = db.OpenRecordset(strSQL)
 
If Not rs.EOF Then rs.MoveFirst
 
Do While Not rs.EOF 
...
 
Warum lädt man alle Felder der Abfrage, wenn man nur eines zum Zusammensetzen braucht? Selbst die eitelste Dame trägt nicht  die Schränke mit allen ihren Schuhen mit sich herum, vermutlich weil es zum einen der Gesamtschönheit nicht dient und zum anderen schwere und unnütze Arbeit ist. Bei Daten ist es nicht anders als bei Schuhen.

Die Zeile mit MoveFirst ist unnütz. Bei einem neu geöffnetem Recordset liegt der Datensatzzeiger zwingend auf dem ersten Datensatz, sofern es Datensätze gibt, ansonsten gleich auf EOF. Die nachfolgende Schleife mit Bedingung NOT EOF deckt beide Fälle bereits überzeugend ab.

Neben Stilfragen dann noch Performancegedanken:
Zitat
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
Die Ergänzung ist der eingestellte Standard, der aber neben dem Lesen auch Schreibvorgänge verwalten muss - man denke an Sperrungen bei Mehrnutzerumgebungen  sowie an Transaktionen, wo einiger Aufwand auftreten kann, der grundsätzlich verwaltet werden muss.
dbForwardOnly ... steht für einmaliges Vorwärts-Durchlaufen im Nur-Lese-Modus und wäre dieser Aufgabe angemessen.

An den meisten geht vorbei, dass es neben dem Tippeldappel-Zusammensetzen von Einzelwerten aus einer Abfrage  per Schleife mit einigen systembedingten Schwächen die performante und gewaltige Methode Getstring des ADODB-Recordsets gibt.

Es könnte ja sein, dass man neben Funktionieren gutes Funktionieren (=> Performance) braucht ...
Gewohnheiten ergeben sich aus Tun, Üben, Verwenden ...
« Letzte Änderung: Januar 07, 2018, 09:41:50 von ebs17 »
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: jagger

Offline jagger

  • Newbie
  • Beiträge: 42
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #9 am: Januar 07, 2018, 11:05:39 »
@Frithjof,

Du hast recht. Es funktioniert. ebs17 hat es gut erkannt. Das Textfeld war
nicht hoch genug. Ich hatte die Werte hintereinander erwartet. Sorry.

@ebs17,
Danke für die weiteren Ausführungen. Sollte man natürlich immer berücksichtigen.
Zitat
Warum lädt man alle Felder der Abfrage, wenn man nur eines zum Zusammensetzen braucht?
Wenn die Abfrage nur ein Feld hat? Ist es da nicht egal?

Ich habe mich für das Beispiel von MzKlMu entschieden.
Die Funktion liefert die Werte nebeneinander und man kann die Texttrenner gut
anpassen.
Optional ByVal SepR As String = "; "
Vielen Dank für eure Hilfe
LG
jagger

 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7201
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #10 am: Januar 07, 2018, 11:48:56 »
Hallo,
nur der Ordnung halber, das Beispiel ist nicht von mir, ich habe nur den Link gepostet.
Zitat
Die Funktion liefert die Werte nebeneinander und man kann die Texttrenner gut anpassen.
Das geht auch mit dem Beispiel von Frithjiof völlig problemlos.
   me.SV  =  me.SV  &  rs!OrderSaison  & "; "
Zitat
Wenn die Abfrage nur ein Feld hat? Ist es da nicht egal?
Um mal bei Eberhards bildhaften Beispielen zu bleiben (meistens gefallen sie mir  ;D) :
Wenn Du ein Flasche Bier aus dem Keller brauchst, holst Du da jedes Mal den Kasten hoch um eine Flasche zu entnehmen und dann den Kasten wieder herunter zu tragen ?
Mit andern Worten jedes Feld das man nicht braucht ist Ballast.

 
« Letzte Änderung: Januar 07, 2018, 13:48:56 von MzKlMu »
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: jagger

Offline jagger

  • Newbie
  • Beiträge: 42
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #11 am: Januar 07, 2018, 14:38:22 »
@MzKlMu,
Zitat
Zitat
Wenn die Abfrage nur ein Feld hat? Ist es da nicht egal?
Um mal bei Eberhards bildhaften Beispielen zu bleiben (meistens gefallen sie mir  ;D) :
Wenn Du ein Flasche Bier aus dem Keller brauchst, holst Du da jedes Mal den Kasten hoch um eine Flasche zu entnehmen und dann den Kasten wieder herunter zu tragen ?
Mit andern Worten jedes Feld das man nicht braucht ist Ballast.

Das ist schon klar, aber wie ist es, wenn die Abfrage nur ein Feld hat?

Zitat
Wenn Du ein Flasche Bier aus dem Keller brauchst, holst Du da jedes Mal den Kasten hoch um eine Flasche zu entnehmen...
Ja natürlich! Man weiss ja nie... ;-)

Zitat
...und dann den Kasten wieder herunter zu tragen ?
Selbstverständlich nicht! :-)

LG
jagger
« Letzte Änderung: Januar 13, 2018, 11:14:02 von jagger »
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1736
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #12 am: Januar 07, 2018, 16:10:52 »
Hallo Jagger,
Zitat
Das ist schon klar, aber wie ist es, wenn die Abfrage nur ein Feld hat?
Dann ist es eigentlich egal. Beim Lesen von "*" wird jedoch allgemein von
mehreren Feldern ausgegangen. Daher die Anmerkung von Eberhard.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: jagger

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 879
Re: alle Werte eine Spalte aus Abfrage in ungebundenen Textfeld anzeigen
« Antwort #13 am: Januar 07, 2018, 20:09:17 »
Zitat
aber wie ist es, wenn die Abfrage nur ein Feld hat?
Das wäre eine Momentsituation. Es soll vorkommen, dass Abfragen überarbeitet werden, um sie z.B. bei weiteren Verwendungen einzusetzen. Wenn da weitere Felder hinzukommen, übernimmt Deine aufbauende Abfrage stur  alles wie geschrieben.
Wenn Du dagegen dieses eine Feld namentlich aufführst, kann da im Untergrund eine Menge passieren, und Deine Verarbeitungsschicht bleibt trotzdem unbeeinflusst.

Eine ordentliche Datenbank ist regelmäßig ein langfristiges Gut. Da soll keiner sagen, dass die Abfrage nicht mal durch Deinen Nachfolger oder durch Dich selber verändert wird. Ob dann noch das Bewusstsein dafür da ist, welche Folgen dadurch auftreten können, ist zu bezweifeln.

Und wie bereits gesagt: Das Sternchen irritiert beim Lesen der Anweisung, mindestens schon mal einen Dritten.

SELECT * FROM qry_Filter_OrderSaisonPersönlich würde ich statt dieser Anweisung mit recht wenig Informationsgehalt gleich die SQL-Anweisung von qry_Filter_OrderSaison verwenden. Da hätte man die Info zu dem nur einen Feld automatisch dabei.
« Letzte Änderung: Januar 07, 2018, 20:19:14 von ebs17 »
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: jagger