PDA

Vollständige Version anzeigen : Listboxproblem


Lab-Doc
26.09.2003, 07:38
hallo,

stehe vor einem neuen problem (obwohl ich die alten noch gar nicht gelöst habe!):

Im startformular hab ich eine listbox, die mir namen und material aus einer tabelle "rohdaten" liefert. nun will ich bei doppelklick auf einen der namen ein formular öffnen, wo alle daten des entsprechenden namens angezeigt werden. die formulare sind aber je nach material verschieden, haben aber den namen des materials (also wenn Material=blut, dann öffne formular blut,...").

kann man das einem schmalspurprogrammierer wie mir verständlich verklickern?

danke im voraus

doc

Morli
26.09.2003, 07:51
Welcher Wert steht den in welcher Spalte der Liste?

Spalte 1 = Name
Spalte 2 = Material

??????

Und dann angenommen, das Formular "Blut" soll mit dem Datensatz "Name" geöffnet werden.

Dann

DoCmd.OpenForm Me.DeineListe.Column(1),,,"[Name]='" & Me.DeineListe & "'"

Morli

Hondo
26.09.2003, 07:52
Hallo,
beim Ereignis Bei Doppelklick schreibst du:

Select case Me!listenfeld
case blut
DoCmd.openForm "Blut"
case irgendwas
....
End Select


Gruß Andreas

J_Eilers
26.09.2003, 08:00
Hallo,

so ganz, kann ich dir auch nicht sagen, ob das klappt, aber ich hätte zumindestens eine Idee.
Also wie viele unterschiedliche Auswahlmöglichkeiten hast du denn?
Vielleicht kann man ja was mit If Then Else was machen.
Ansonsten sollte man vielleicht drüber nachdenken eine ExtraID für das Formular einfügen.

Na da bin ich ja mal wieder spät dran...
(Hat meine Browserverzögerung wohl funktioniert ;) )

Lab-Doc
26.09.2003, 08:23
hallo,
zunächst danke für die hilfe

@morli:
ein problem hab ich dabei noch: es funktioniert nur einmal, d.h. wenn ichdas blut-formular wieder schließe und vom namen den "Harn" ansehen will, wird zwar das richtige formular, aber der erste und nicht der gesuchte datensatz angezeigt. übrigens, die "'" mußte ich weglassen, damit es funktioniert

gruß
doc

Morli
26.09.2003, 08:34
Hast Du als Feld-Name wirklich "Name" verwendet? Das führt meist zu Konflikten, da das eine reservierte Bezeichnung ist. Der Rest ist schlecht zu beurteilen, da ich den Aufbau Deiner DB nicht kenne.

Morli

Lab-Doc
26.09.2003, 10:48
hallo,

"name" heißt" eigentlich familienname. das form aufschlagen lasse ich eigentlich über eine eindeutlige Indexnummer, der formname lautet aber wie das verwendete material. dzt. schlägt man mir zwar das gewünschte form auf, allerdings immer mit dem ersten datensatz und nicht mit dem gesuchten (üblicherweise werden die forms ja subjektiv über das zu befundende material gewählt und sind hier nach befundnummer geordnet, wenn man aber nur den Patienten kennt und nicht weiß, was von ihm gemacht wurde, wäre der weg, den ich jetzt plane, einzuschagen) die patienten sind inder tabelle rohdaten gespeichert und über einen filter beim formularöffnen werden nur die mit dem passenden Material eingelesen). soweit ein grober überblick über die datenbank, meine erste anfrage war nur eine abstraktion daraus

grüsse

doc

Lab-Doc
26.09.2003, 11:08
nachtrag:
ich kann machen was ich will, das filterkriterium wird im zu öffnenden form nicht übernommen

doc

J_Eilers
26.09.2003, 11:13
Hallo,

ich würde dir dann 2 abhängige Kombifelder vorschlagen. Im ersten wird der Patientenname ausgewählt und im 2. das entsprechende Formular. Nun hast du beider Bedingungen und könntest diese als Kriterium beim Öffnen oder in der Datenherkunft einfügen und hast das entsprechende Formular mit den entsprechenden Patientennamen.

Lab-Doc
26.09.2003, 11:39
hi,
das ist zwar eine lösung, aber je weniger zu klicken, schreiben, ... umso besser.
was ich nicht verstehe ist, das mir der debugger ja alles richtig anzeigt. aber wie sag ich dem formular "blut" es soll diesmal nicht den ersten datensatz, sondern den mit der nummer xy anzeigen? schätze es würde gehen, wenn ich den filter in "blut" stehen hätte, ich will aber nicht, daß er immer wirkt. ... oder wird mein filter aus dem Startformular um Me.Filter="Blut" im blut-formular overruled?

hiiiilfe

doc

Lothi
26.09.2003, 11:52
Hallo

Zeig mal die Datenherkunft des Listenfeldes!

Da muss doch die ID des Patienten drin sein. Dieses kannst du als Kritrium übergeben. Siehe erstes Posting Morli

J_Eilers
26.09.2003, 12:09
Ich glaube es wäre am einfachsten wenn du ein Minimalbeispiel deiner DB mit Fantasiedaten hochlädst. Du kannst auch mehrere Kriterien in die DoCmd.OpenForm Funktion einbauen verknüpfungen werden mit AND gemacht. Zur besseren Übersichtlichkeit würde ich dann aber mit einem Platzhalter arbeiten und dieser muss dann davor!
stlinkcriteria ="[Name]='" & Me.DeineListe & "'" AND "[PatientenID] = " & Me!DeineListe
DoCmd.OpenForm Me.DeineListe.Column(1),,,stlinkcriteria

Lab-Doc
26.09.2003, 12:26
bei dem code erhalte ich laufzeitfehler 13, typen unverträglich

gruss

doc

Lab-Doc
26.09.2003, 12:52
das listenfeld beruht auf einer abfrage der tabelle rohdaten, von der ich später auch den gewünschten datensatz im formular angezeigt haben will
Nr ist der Filter und Material der Formularname, in der Tabelle Rohdaten heißen sie Indexnummer bzw. Material

SELECT Patientensuchen2.Nr , Patientensuchen2.Untersuchung, Patientensuchen2.Familienname, Patientensuchen2.Vorname, Patientensuchen2.Geburtsdatum, Patientensuchen2.Befund, Patientensuchen2.Material , Patientensuchen2.Panel, Patientensuchen2.Arzt

ich hab immer gedacht wenn ich me.listeX.Column(0) für den Filter und me.listeX.Column(5) für das Formular nehme, sollte es gehen, denkste. der filter wird ignoriert. Das formular startet übrigen dann mit:

Private Sub Form_Load()
Me.Filter = "Befundart = 'Immunstatus'"
Me.FilterOn = True

Lothi
26.09.2003, 13:29
Hallo

Das sieht ein bisschen komisch aus der SQL String (zu kleiner Bildschirm) :D

Patientensuche2.Nr ist einzahl Ja
Patientensuche2.Untersuchung ist das Formular Ja

Dann würde ich so sagen


strKrit As String

strKrit = "Nr = " & Me!DeinListfeld.Column(0)

DoCmd.OpenForm Me!DeinListfeld.Column(1), , , strKrit



Das setzt voraus das in jedem Formular auch Feld das den Name Nr trägt für die Personalnummer

Lab-Doc
26.09.2003, 13:50
wie schon den ganzen tag:
das richtige formular, aber immer der erste datensatz und nicht der aus dem Filterkriterium!
das kuriose: es wird im form start wirklich datensatz 34 gefordert, im blutformular aber datensatz 31 (unten steht dann 1 von 9)!!! abezeigt, der filter also offensichtlich ignoriert.

doc

Lab-Doc
26.09.2003, 13:55
ich hab die lösung:

der filter im formular hat den übergebenen filter overruled. jetzt gehts!

J_Eilers
26.09.2003, 13:56
Lösche den Filter doch mal raus oder schreib ein ' davor. Der wird nämlich nicht benötigt, da das Kriterium bereits im Aufrufen vorhanden ist.

Lab-Doc
29.09.2003, 09:47
hi,
die lösung ist noch immer insofern unbefriedigend, da ich nun ja nur einen datensatz angezeigt bekomme und nicht der gesuchte innerhalb aller passenden (z.B. "Blut") aufgeschlagen wird

grüsse

doc

J_Eilers
29.09.2003, 09:49
Könntest du vielleicht mal ein Minimalbeispiel mit Fantasiewerten hochladen? Ich denke, dass es eigentlich funktionieren sollte.

Lab-Doc
29.09.2003, 11:48
hi,
zuminderst das filtern über material funktioniert nun. ich werde mich un den 100000 (oder waren da noch ein paar nullen?) anderen problemen zuwenden

doc

J_Eilers
29.09.2003, 11:52
Sehr schön, genau das ist das Prinzip dieses Forums...was spricht dagegen deine DB zu zippen und hochzuladen? Vielleicht könnte man dir dann ja auch noch weiterhelfen. Aber wer nicht will, der hat schon.

Lab-Doc
29.09.2003, 13:09
hi,
kommt schon noch! da die db aber schon im Krankenhaus verwendet wird (die "groben sachen" funktionieren schon) muß ich mit den daten sehr sorgfältig umgehen, dauert also, bis die db verschickbar wird.

doc