Neuigkeiten:

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

Mobiles Hauptmenü

Listenfeldeintrag in ungebundenes Listenfeld übergeben!

Begonnen von Frank77, November 04, 2011, 14:37:46

⏪ vorheriges - nächstes ⏩

Frank77

Hallo!
Ich hab da eine frage zu den Listenfeldern ?

Mein 1. Listenfeld bezieht seine Daten aus  den initialisierten Recordset aus einer abfrage im Form_Load Ereignis und ist ungebunden
Das 2. Listenfeld ist ungebunden und einspaltig  nun möchte ich zur späteren weiteren Verarbeitung Einträge aus 1 in 2 schreiben
Das mit der folgenden Prozedur auch hinhaut ,da es aber so nicht schön aussieht und ich mit den aus lesen Probleme habe  möchte ich es in die einzelnen  Column´s schreiben lassen  
Bekomme es aber Leiter nicht hin

Option Compare Database
Option Explicit

Dim items$

Private Sub Befehl117_Click()
Dim z%
For z = 0 To IstBank.ListCount - 1
 If IstBank.Selected(z) = True Then
 items = items & IstBank.Column(0, z) & "   " & IstBank.Column(1, z) & "   " & IstBank.Column(2, z) & _
"   " & IstBank.Column(3, z) & "   " & IstBank.Column(4, z) & ";"
 End If
Next z
IstBankMerken.RowSource = ""
IstBankMerken.RowSourceType = "Value List"
IstBankMerken.RowSource = items
End Sub


Ich habe auch schon versucht es über die rst.FindFirst "BankID = " & Me.IstBank.Column(0)
Versucht aber ich bekomme es nicht hin den selektierten Eintrag anzufügen

Wenn ihr einen Lösungsansatz für mich hättet wäre ich sehr dankbar

Gruß Frank
Selbstständig = Selbst und Ständig

DF6GL

Hallo,

wenn ich recht verstehe, willst Du die im ersten Listenfeld markierten Einträge (Zeilen) in ein zweites Listenfeld übertragen...


Private Sub Befehl117_Click()

Dim items As String, itm

For each itm in Me!IstBank.Itemsselected
  items = items & Me!IstBank.Column(0, itm) & ";" & Me!IstBank.Column(1,tm) & ";" & Me!IstBank.Column(2, itm) & _
";" & Me!IstBank.Column(3, itm) & ";" & Me!IstBank.Column(4,itm) & ";"
Next

Me!IstBankMerken.ColumnCount = 5
Me!IstBankMerken.RowSourceType = "Value List"
Me!IstBankMerken.RowSource = items

End Sub
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Frank77

N´Abend  DF6GL

Danke für die Lösung funktioniert prima !

Eine frage hätte ich noch dazu :
ist es möglich den Eintrag Bzw. das Listenfeld auch beim schlissen des Formulares nicht zu verlieren also ihn/es temporär bis zum manuellen löschen zu speichern !

Gruß Frank und vielen Dank !
Selbstständig = Selbst und Ständig

DF6GL

Hallo,

nein, das ist nicht möglich, weil konzeptionell nicht vorgesehen. Daten werden hauptsächlich in Tabellen ( und ausnajmsweise an ein paar anderen Stellen ) gespeichert und nicht in Formularen....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo,
Zitat
ist es möglich den Eintrag Bzw. das Listenfeld auch beim schlissen des Formulares nicht zu verlieren also ihn/es temporär bis zum manuellen löschen zu speichern
Zitat
nein, das ist nicht möglich, weil konzeptionell nicht vorgesehen. Daten werden hauptsächlich in Tabellen ( und ausnajmsweise an ein paar anderen Stellen ) gespeichert und nicht in Formularen....
Prinzipiell richtig, nur hier hast Du eine temporär erstellte Werteliste (String). Die/den müsstest Du z.B. in die Tag-Eigenschaft der 2. Liste schreiben können (bis 2048 Zeichen). Um das wieder zu löschen weist Du der Eigenschaft eine leere Zeichenkette zu ("").
Du musst allerdings dafür sorgen, dass das Formular beim Schliessen gespeichert wird (Änderungen speichern? Ja).
Falls das nicht funzt (hab's jetzt nicht getestet), geht vielleicht auch, den String in eine statische globale Variable in einem allgemeinen Modul zu speichern.
hth
beaker s.a.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

ZitatDie/den müsstest Du z.B. in die Tag-Eigenschaft der 2. Liste schreiben können

das funktioniert zwar in der Normalansicht des Form, kann aber nicht beim Schliessen des Forms gespeichert werden.  Um dauerhaft zu speichern, muss das Form in der Entwurfsansicht geöffnet sein, wo wiederum keine Datenbearbeitung möglich ist. (Sicherlich könnte man auch irgendein anderes Objekt bearbeiten, das das Speichern eines Strings in irgendeiner seiner Eigenschaften erlaubt und den String wieder von dort auslesen, aber das ist lediglich Murkserei und führt bei nächster Gelegenheit zum Absturz der DB.)

Zitat
geht vielleicht auch, den String in eine statische globale Variable in einem allgemeinen Modul zu speichern

Das ist durchaus möglich, die Variable existiert aber nur während der aktuellen Access-Sitzung. Beim nächsten Starten der DB-Anwendung ist der String wieder dahin (im worst-case Fall  sogar auch schon  nach Auftreten eines nicht abgefangenen Laufzeitfehlers)



Insofern sind
Zitatausnahmsweise an ein paar anderen Stellen
zu nennen:

Speichern in einer anwenderdefinierten DB-Eigenschaft (Property) 
Speichern in einer ext. Text-Datei
.
.



Grundsätzlich würde ich bezgl. der Ausgangssituation aber raten, das Bearbeitungskonzept neu zu überdenken.  (Benutzung von "Tabelle/Abfrage" im Listenfeld, Markieren von Datensätzen mittels Hilfsfeld in der Tabelle, Füllen der Listenfelder mittels dynamisch erzeutem SQL-String unter Nutzung des Primärschlüsselfeldes ,   etc)

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo DF6GL, (oder hast Du auch einen richtigen Namen? ;-)

Zitat
das funktioniert zwar in der Normalansicht des Form, kann aber nicht beim Schliessen des Forms gespeichert werden.  Um dauerhaft zu speichern, muss das Form in der Entwurfsansicht geöffnet sein, wo wiederum keine Datenbearbeitung möglich ist.

Ja, stimmt natürlich; - mal wieder so'n Schnellschuss.

Zitat
Das ist durchaus möglich, die Variable existiert aber nur während der aktuellen Access-Sitzung. Beim nächsten Starten der DB-Anwendung ist der String wieder dahin (im worst-case Fall  sogar auch schon  nach Auftreten eines nicht abgefangenen Laufzeitfehlers)

Auch wieder richtig. War aber davon ausgegangen, dass der OP das nicht über die Länge der Sitzung hinaus gespeichert haben wollte.

Zitat
Speichern in einer anwenderdefinierten DB-Eigenschaft (Property) 
Speichern in einer ext. Text-Datei
.
.

Möglichkeiten gibt es viele, da wird er schon das richtige für sich finden. Ich wollte ja auch nur aufzeigen, dass Dein

Zitat
nein, das ist nicht möglich

nicht so kategorisch ist, wie es rüberkommt.

gruss
ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,


besser kategorisch als nicht funktionierende Schnellschüsse....   8)

Zitatoder hast Du auch einen richtigen Namen?

lies ihn halt...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Franz,

Zitat
besser kategorisch als nicht funktionierende Schnellschüsse....   

Jein, wenn's doch Möglichkeiten gibt. VBA ist doch irgendwie wie ein Labyrinth; - machmal führen mehrere Wege zum Ziel, und manchmal landet man in einer Sackgasse   ;).

Zitat
lies ihn halt...

Schäm  :-[

gruss
ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

database

Hallo,

ZitatJein ...
Würde ich für einen nicht funktionierenden Schnellschuß nicht anwenden - das passt dann auch irgendwie nicht recht zusammen  ::)

ZitatVBA ist doch irgendwie wie ein Labyrinth

Für manche ...   ;)

Frank77

#10
Hallo an alle!

Danke für eure antworten die waren sehr hilfreich für mich

Die Frage mit dem temporären speichern war nur eine fixe Idee rein aus Interesse

Aber ich bin jetzt beim teste auf etwas interessantes Gestosen
ich liste jetzt sagen wir mal 5 Einträge über die Prozedur in das 2. Feld der sin besteht darin das ich mir aus 19000 datensetzen die aus wähle die ich benötige  und sie darin merke
dann wähle ich einen aus der dann im Bearbeitungsformular  
aber das ist nur neben Sache

So zum Tema :

Für das listen Feld habe ich einen Restbutton angelegt und folgende 2 Codes hinterlegt hinterlegt
Bzw. abwechselnd getestet
Beide funktionieren auch und leeren das Listenfeld  aber der Witz an der Sache ist
das wenn ich dann erneut einen Datensatz in das Listenfeld Transportiere    
die anderen wieder da sind und der neue einfach unten abgefügt wird anstand er der einzige neue ist
und oben steht

Da ich oben gelesen habe das das dann evtl. in einer variablen bis zum schlissen des Formulars gespeichert wird was mach ich da jetzt falsch ?
Denn wenn es dann zu einem Fehler kommt stürzt die Datenbank ab!
Was bei einer 32bit Version von Office 2010 auf Win7 Öfters passiert

Wenn ich den code so verwende :

Dim z As String

For z = 0 To IstOrt.ListCount - 1
  If Me!IstOrt.Selected(z) = True Then
  items = items & IstOrt.Column(0, z) & ";" & IstOrt.Column(1, z) & ";" & IstOrt.Column(2, z) & _
";" & IstOrt.Column(3, z) & ";" & IstOrt.Column(4, z) & ";"
  End If
Next z
Me!IstOrtMerken.ColumnCount = 5
Me!IstOrtMerken.RowSource = ""
Me!IstOrtMerken.RowSourceType = "Value List"
Me!IstOrtMerken.RowSource = items
Me!CmdReset.Visible = True



Zum Löschen:

   Dim i As Integer
   Dim q As Integer
 
   q = IstBankMerken.ListCount
   i = 0
   Do Until i = q
       IstBankMerken.RowSource = ""
       i = i + 1
   Loop
   Me!CmdMerken.SetFocus
   Me!CmdReset.Visible = False



 Me!IstBankMerken.RowSource = ""

Zu einzelnen löschen eines markirten eintrags  habe ich den hier verwendet :

    ListBox1.SetFocus

    If ListBox1.ListCount >= 1 Then
        'Wenn kein Element ausgewählt wurde, letztes Element der Liste wählen.
        If ListBox1.ListIndex = -1 Then
            ListBox1.ListIndex = ListBox1.ListCount - 1
        End If
        ListBox1.RemoveItem (ListBox1.ListIndex)
    End If



Gruß Frank der der im Labyrint wandelt !
Selbstständig = Selbst und Ständig