Listenwert markieren, über Button Form öffnen

Hallo,

dringende Hilfe benötigt. Bin schon am durchdrehen.

Wie kann ich Folgendes programmieren:

Eine Formularliste, in welcher Studien aufgelistet sind liegt vor. Die Studie soll mittels eines Klicks auf die Liste markiert werden und dann soll mich eine Schaltfläche Visiten ins nächste Form bringen.
Es soll nur Feld Studie angezeigt werden, die anderen leer, da eine neue Visite angelegt werden soll. Der Patient, anwelchem die Vis. durchgeführt wird, soll über Kombibox ausgewählt werden. Dort sollen aber nur die Pat. auftauchen, welche in der studie sind.
Dann sollen auch in einer Kombobox die Vis angezeigt/auswählbar werden/sein, welche auf diese studie zugeschnitten sind.

bin soweit, dass ich über doppelklick auf liste die Studie usw. angezeigt bekommen. Krieg das aber nicht über das markieren-schaltfläche drücken hin.
und das mit den Kombofeldern gleich gar nicht…

Grüße Linda

Hallo Linda,

erzähl doch bitte noch, um welche Software es geht. VB? Access? Excel? Welche Version jeweils …

Gruß Rainer

Achso, Entschuldigung. :smiley:

Access, VBA

Hallo,

na dann versuchen wir’s mal, ich habe hier kein Access. Mal sehen, wie weit ich mit meinem VB6 da komme.

Eine Formularliste, in welcher Studien aufgelistet sind liegt vor.

Was ist das für eine Liste? Welcher Typ Steuerelement ist das.
Ein Flexgrid, ein DBGrid, ein Liszensteuerelement, eine DBList …

Einen Namen hat das Steuerelement auch, verrate den doch mal.

Lege Dir einen Commandbutton auf die Form.
Klick den Commandbutton doppelt an, dann öffnet VBA den Editor und schreibt Dir schon mal Anfang und Ende des Klick-Ereignisses.

Wie wir an die Daten aus der Liste kommen, hängt davon ab, was genau das für eine Liste ist. Dafür kann ich also noch keinen Code haben.

Falls es eine Liste ist und die List1 heißt:

Variable = List1.List(List1.Listindex)

Um eine andere Form zu öffnen genügt:

Userform2.Show

… Wenn die Form ‚Userform2‘ heißt, sonst eben den richtigen Namen eintragen, ich weiß nicht, wie Du die Form genannt hast. Um die Form wieder zu verstecken:

Userform2.Hide

Beim beenden des Programms musst Du alle Userformen entladen. sonst läuft deren Prozess weiter!

Gruß Rainer

Beim beenden des Programms musst Du alle Userformen entladen.
sonst läuft deren Prozess weiter!

Hallo Rainer,

wie stelle ich fest ob ein Prozess noch läuft. Steht er dann in der Taskleiste die ich mit Strg+Alt+Entf bekomme?

Wenn ich in VB5 eine Form starte so habe ich unten in der Taskleiste dann bei Klick auf Vb5 die Auswahl zwischen der Form und VB5.
Ist die Form beendet, so ist auch die Auswahl weg.

In ExcelVba ist das nicht so, da habe ich in der Taskleiste Excel stehen und jenachdem ob der Vb-Editor geöffnet ist oder nicht die Auswahl zwischen der Anzeige von Excel oder des Editors.

Eine in Excel grad angezeigte Userform steht nicht zur Auswahl im Gegensatz zu VB.

Ich vermute also, eine Userform die man oben rechts durch das Schließkreuz beendet muß man nicht noch „unloaden“.

Gruß
Reinhard

Hallo Reinhard,

nein, nicht in der taskleiste, im Taskmanager siehst Du die laufenden Prozesse.

Wenn Du in VB5 Form2 öffnest und dann nur mit .Hide versteckst, läuft der Prozess weiter. Wird Form2 dann über das Kreuz geschlossen, siehst Du Form2 in der Taskleiste nicht mehr, im Taskmanager siehst Du aber den noch laufenden Prozess.

Man kann alle Formen in einer Schleife entladen, man kann aber auch in QueyUnload von Form1 einfach nur ‚End‘ schreiben, das reicht auch.

Gruß Rainer

Hallo Rainer,

danke dir für die Infos.

Gruß
Reinhard

Danke Rainer, erst mal.

Werd mich später erst mal drüber her machen und sehen wie weit ich komme, und ggf. mehr infos geben.

Grüße, Linda

Hier alles noch mal genauer:

Form F_Stud enthält Liste1 (Listenfeld, Listensteuerelement). Werte erhält sie über Tabelle Studie. Es sind alle studien aufgelistet.
Über Schaltfläche ‚Befehl3‘ wird Form F_Vis geöffnet. Die Textfelder werden über eine Abfrage ‚F_Vis‘ gefüllt. Das Textfeld ‚Studie‘ soll jetzt aus dem Form F_Stud aus Liste1 übernommen werden (indem ich in ‚F_Stud‘ die Studie markiert habe und dann Befehl3 betätigt habe --> bitte erklären wie ich das hinbekomme).
Die anderen Felder sollen leer sein (DoCmd.GoToRecord , , acNewRec).

Jetzt möchte ich gern, dass man aus der Tabelle Patient die PatID über ein Kombinationsfeld aussuchen kann. Es sollen aber nur die Pat auswählbar sein, welche auch für diese Studie eingetragen wurden.

Eine Tabelle Visiten ist wie folgt aufgebaut:
VisID(Autowert, nicht relevant zum arbeiten mit form), Studie, VisitenNr, Bennenung.
Im Form F_Vis möchte ich gern die VisitenNr über Kombinationsfeld auswählen können. Aber nur wieder die Vis, welche ich zu einer Studie eingegeben habe. Die ‚Bennenung‘ der Studie soll dann automatisch erscheinen.
Nun kann es aber sein, dass es zwei mal die VisitenNr 2 gibt. Deswegen habe ich die VisID eingeführt.

Wenn ihr mir soweit helfen könntet, wäre ich euch tausend mal dankbar!!!

Grüße Linda

Guten Morgen,

Form F_Stud enthält Liste1 (Listenfeld, Listensteuerelement).
Werte erhält sie über Tabelle Studie. Es sind alle studien
aufgelistet.
Über Schaltfläche ‚Befehl3‘ wird Form F_Vis geöffnet.
Die Textfelder werden über eine Abfrage ‚F_Vis‘ gefüllt.
Das Textfeld ‚Studie‘ soll jetzt aus dem Form F_Stud aus Liste1
übernommen werden (indem ich in ‚F_Stud‘ die Studie markiert
habe und dann Befehl3 betätigt habe --> bitte erklären wie
ich das hinbekomme).

Klick die Schaltfläche ‚Befehl3‘ doppelt an. VBA öffnet ein Fenster, in dem Du Code eingeben kannst und schreibt da schon etwa so etwas hin:

Private Sub Befehl3\_Click()

End Sub

Die Syntax kann etwas abweichen, weil ich VB6 verwende und Du VBA, aber das stört nicht. Das macht VBA auch allein richtig. :smile:

Dort musst Du nur zwei Zeilen einfügen, das sieht bei mir dann so aus:

Private Sub Befehl3\_Click()
 F\_Vis.Studie.Text = Liste1.List(Liste1.ListIndex)
 F\_Vis.Show
End Sub

OK?

Gruß Rainer

Hallo,

OK, ich bin im Büro und habe Access97 zur Verfügung.

Access weigert sich recht heftig, zu tun was ich möchte. :smile:

Steuerelemente bearbeiten mag es nur, wenn diese den Focus haben.
Steuerelemente einer anderen Form bearbeiten, mag Access-VBA im Moment gar nicht. Die Form mit dem Namen ansprechen, den ich ihr analog Deiuner Namen gegeben habe, mag VBA auch nicht.

Ich vermute, das liegt an mir, mehr Erfahrung mit Access-VBA habe ich leider nicht.

Lediglich mit dem folgenden Code habe ich zumindest das Ergebnis erzielen können, das Du wolltest. Der Code gefällt mir aber gar nicht, ich hoffe, da korrigiert mich noch Jemand und schreibt etwas Besseres.

Gruß Rainer

Option Compare Database
Option Explicit

Private Sub Command3\_Click()
 Dim txt As String
 List1.SetFocus
 txt = List1.ItemData(List1.ListIndex)
 Forms("Form2").Visible = True
 Forms("Form2").SetFocus
 SendKeys txt
End Sub

Hallo,

Ich habe es jetzt so geklärt, da das andere nicht recht fkt. hat.

Form F_Stud

Private Sub Befehl3_Click()

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = „F_Vis“
If VarType(Liste1.Value) = 1 Then
MsgBox „Bitte markieren Sie eine Studie!“
Else
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , Liste1.Value
End If

Form F_Vis

Private Sub Form_Open(Cancel As Integer) 'leere Maske

DoCmd.GoToRecord , , acNewRec

End Sub

Trotzdem natürlich ein dickes Dankeschön.

Kannst du mir noch bei den anderen Problemen helfen? Wäre wirklich nett!

Hallo,

OK. Hast Du den anderen Code gesehen, wo ich mich mit Access versucht habe? Nicht schön, ich weiß, aber eventuell doch besser als ‚merken‘.

Eintippen bringt immer die Gefahr von Tippfehlern.

Nächster Punkt:

Der Patient, anwelchem die Vis. durchgeführt wird, soll über
Kombibox ausgewählt werden. Dort sollen aber nur die Pat.
auftauchen, welche in der studie sind.

Das ist eine Datenbankabfrage.

SOLString = "SELECT [Patienten.DeinFeld] FROM Patienten WHERE [Patienten.Studie] = " & Studie.Text

Wie die Abfrage dann in Access an die Combobox übergeben wird, weiß ich nicht. Das könnte ich nur in VB6. :frowning:

Gruß Rainer