PDA

Vollständige Version anzeigen : Button und Unterformular???


Daniel the Gecko
14.02.2003, 10:49
Guten Morgen,

Ich möchte mit einen Button ( in einer optionsgruppe) auf ein UFo wechseln. Wenn das geschieht soll das UFo überprüfen von welchem Button der Wechsel kommt. und Dann die Werte aus einer Bestimmten Tabelle übernehmen,

Frage geht das mit Makros, VBA oder wie kann ich das realisieren. Ist das überhaupt möglich?

Ich habr mal einen Screen schot eingefügt. Damit ihr ne vorstellung habt.

Danke schon mal


NAchtrag: JPEG statt zip eingefügt

Aquarii (Moderator)

Aquarii
14.02.2003, 10:58
Hallo Daniel,

das würde ich über eine globale Variable lösen. Jeder Button übergibt der Variablen einen Wert, den Du dann vom UF aus auslesen und entsprechend darauf reagieren kannst.

Daniel the Gecko
14.02.2003, 11:03
Das mit dem wert habe ich schon mitbekommen, das ware bei PC die 1, ja und wie kann ich jetzt dann das UFo den Wer auslesen lassen. Ich habe das noch nie gemacht.

Ich denke das müsste ich in VB machen

denke so wenn der wert 1 ist dann öffne die Tabelle...(PC)..

oder so . Keine Ahnung

Alexander Jan Peters
14.02.2003, 11:22
<div>Hallo,

ich denke, dass eine globale Variable nicht nötig ist, wir haben hier einen Bezug, ein Steuerlement, das abfragbar ist, nämlich die Optionsgruppe des HF.</div>
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="REM">'// Im Ereignis 'Nach Aktualisierung' </span>
<span class="REM">'// der Optionsgruppe im HF</span>
<span class="TOKEN">Private Sub</span> ogrAuswahl_AfterUpdate()
Me!sfrUnterformular.Form!txtDeinFeld.SetFocus
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>
&nbsp;
<span class="REM">'// Im Ereignis 'Beim Hingehen' eines Textfeldes</span>
<span class="REM">'// im UF</span>
<span class="TOKEN">Private Sub</span> txtDeinFeld_Enter()
MsgBox Me.Parent!ogrAuswahl.Value
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
<div>Als Alternative könnte man auch über eine Property für das UF nachdenken, oder aber (ganz einfach) mehrere UFs verwenden, die nach Bedarf als Herkunftsobjekt des UF-Steuerelements eingesetzt werden, bzw eines, dessen Datenherkunft verstellt wird (falls das reicht).

Gruß

Alex</div>

Daniel the Gecko
14.02.2003, 11:28
Das mit der Datenherkunft verstellen hört sich ganz gut an. denn im grunde genommen habe ich ja jetzt ein ungebundenes UFo. und um Daten anzeigen zulassen müsste ich ja dann eine Datenherkunft angeben. dann kann ichs aber teoretisch nicht ändern.

Deshlb wäre das glaube ich eine ganz brauch bare idee. Nur wie willst du das machen.?
Das mit mehreren UFos sieht nicht so gut aus denke ich.

Aquarii
14.02.2003, 11:31
Hallo Alex,

klar, wenn es sich um eine Optionsgruppe handelt (was ja nahe liegt) hast Du natürlich Recht. Danke für den Hinweis ;)

Alexander Jan Peters
14.02.2003, 11:47
<div>Hallo,

Original geschrieben von Daniel the Gecko
Das mit der Datenherkunft verstellen hört sich ganz gut an. ./. Nur wie willst du das machen.? ./.

Das ist einfacher, als man denkt:</div>
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="REM">'// Im Ereignis 'Nach Aktualisierung' </span>
<span class="REM">'// der Optionsgruppe im HF</span>
<span class="TOKEN">Private Sub</span> ogrAuswahl_AfterUpdate()
<span class="TOKEN">Dim</span> lRet <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
&nbsp;
lRet = Me!ogrAuswahl.Value
&nbsp;
Select Case lRet
Case 1
Me!sfrUnterformular.Form.RecordSource =&quot;Abfrage1&quot;
Case 2
Me!sfrUnterformular.Form.RecordSource =&quot;Abfrage2&quot;
Case 3
Me!sfrUnterformular.Form.RecordSource =&quot;Abfrage3&quot;
<span class="TOKEN">End</span> Select
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
<div>Die Abfragen sollten sinnvollerweise die gleichen Feldnamen besitzen (was nicht heißt, das die Inhalte gleich sind), da Du sonst die Datenherkunft jedes einzelnes Steuerelements des UF neu einstellen mußt.

Gruß

Alex</div>

Daniel the Gecko
14.02.2003, 11:48
Das konnte ich bei der Optionsgruppe eintragen

'Beim hingehen

Private Sub Optionsgruppe1_Enter()
Me!sfrUnterformular.Form!txtHaAuswahl.SetFocus
End Sub

Das habe ich beim HF eingetragen

'Nach aktualisierung Private Sub

Form_AfterUpdate()
Me!sfrUnterformular.Form!txtHaAuswahl.SetFocus
End Sub

Es funzt aber nicht. Mein Hauptformular heist "Suchen Bitte"
Mein UFo heist "UFosuche"
Meine Optionsgruppe heist "Optionsgruppe1"

ja itgentwie geht das nicht, oder denke ich falsch.

A.S.
14.02.2003, 11:51
Hi,

würde Daniel, wie von Nouba und mir angeregt, seine DB-Struktur normalisieren, könnte er sich die ganze Arbeit und Aufregung mit unterschiedlichen Unterformularen, wechseln der Datenquelle etc. pp. voll und ganz sparen, das würde dann nämlich automatisch von Access über die HFO-UFO-Verknüpfung erledigt.

Gruß

Arno

Daniel the Gecko
14.02.2003, 11:52
Ja die Felder sind alle gleich, es sind nur verschiedene Tabellen (PC, Drucker...(was eben da steht,siehe Bild) und die Felder sind in den Tabellen auswahlfelder. das heist die sind immer gleich.

A.S.
14.02.2003, 11:54
Ja, und wenn Du die Tabellen, wie bereits gesagt, zu einer einzigen Tabelle zusammenfaßtest und dort ein weiteres Auswahlfeld mit

PC, Drucker etc. pp.

hinzufügen würdest, müßtest Du den ganzen Sermon nicht 4 oder 5 mal erstellen. Einmal die Funktionalität zu erstellen sollte doch wohl reichen und auch Dir entgegen kommen, oder??

Gruß

Arno

Alexander Jan Peters
14.02.2003, 11:59
<div>Dem kann ich nur beipflichten. Das würde die Sache ungleich einfacher machen.
Wir dürfen uns sonst wahrscheinlich jeden Tag mit einem dadurch verursachten Problem befassen. Gruß Alex</div>

Daniel the Gecko
14.02.2003, 11:59
Jo hast recht hatte ich mir auch schon überlegt, mal sehn werde das mal in betracht ziehen. Ich wollte nur eben diese Gruppen auseinander halten.
Das Problem war das die daten aus exeltabellen stam,men und ich die nur übernommen habe. Und noch ein Probelem mit den Primärschlüsseln hatte. Denn die Geräte waren schon mit nummern bestückt und die sollte ich beibehalten. dazu sollte aus diesen nummern noch EAN Cods generiert werden das habe ich nun schon alles gelöst.

A.S.
14.02.2003, 20:03
Original geschrieben von Daniel the Gecko
Und noch ein Probelem mit den Primärschlüsseln hatte.

Dazu ist zu sagen, das Du den Primärschlüsseln aus 2 Komponenten (Kategorie & fortlaufende Nummer) zusammensetzen kannst, wodurch der Gesamtkey wieder eindeutig ist, auch wenn in der lfd. Nummer mehrfach derselbe Wert auftaucht.

Du hast dann halt nur (leider) das Problem, das Du in dem Fall keine AutowertID nutzen kannst. Immerhin sind ja bereits IDs in numerischer Form vorhanden.

Du kannst dann im entsprechenden Erfassungsformular im Formular-Ereignis "Beim Anzeigen" oder "Vor Aktualisierung" über die DMax-Funktion jeweils den neuesten Wert für die lfd. Nummer der jeweiligen Kategorie ermitteln. Die entscheidung zum Ereignis obliegt Dir, denn letztlich währe es besser den Satz für welchen Du die neue ID ermittelst sofort zu speichern, damit nicht zufällig von einem weiteren Benutzer die gleiche ID vergeben werden kann (wobei in dem Fall beim Speichern wiederrum ein Laufzeitfehler vom System ausgelöst wird, also eine neue ID ermittelt werden kann!).

Die neue ID ermittelst Du dann über

Me!ID = NZ(DMax("[ID]", "Datentabelle", "[Kategorie]=" & Me!Kategorie)) + 1

Gruß

Arno

Daniel the Gecko
13.03.2003, 10:04
Also ich versuche gerade noch ein mal die aktualisierung eines Ufos durch eine Optionsgruppe.

Doch das Ufo wird bei mir nicht aktuallisiert Da kommt immer ein Laufzeitfehler. Ich habe diesen Code benutz und der geht ja anscheinend auch soweit doch ich verstehe das nicht ganz mit den Abfragen und dem Unterformular (Ufo). Ich habe 4 seperate Abfragen erstellt, einmal suche nach PC, suche nach Drucker, usw.
das ist der Code den ich verwende:

Private Sub orgAuswahl_AfterUpdate()
Dim lRet As Long

lRet = Me!orgAuswahl.Value

Select Case lRet
Case 1
Me!sfrUnterformular.RecordSorce = "NachPC"
Case 2
Me!sfrUnterformular.Form.RecordSorce = "NachMonitor"
Case 3
Me!sfrUnterformular.Form.RecordSorce = "NachDrucker"
Case 4
Me!sfrUnterformular.Form.RecordSorce = "NachRest"

End Select
End Sub

Ich habe dann ein Ufo erstellt im Hauptform und es sfrUnterformular genannt. Meine Abfragen eisen jeweils so wie oben in den "..." aufgeführt sind. ich habe mal den auszug aus meiner DB angehangen.

Wäre wirklich nett wenn ihr mir Helfen könntet und wenn sich jemand damit auskennt

Nouba
13.03.2003, 16:55
Hallo Daniel,

ganz so schlimm ist es eigentlich gar nicht. Du solltest aber die Gerätedefinition nochmal klar überdenken. Du gehst etwas statisch mit den Geräten um. Was machst Du, wenn ein Standortwechsel ansteht? Der Abteilung sind vermutlich Etagen, dann Räume und denen wieder Zimmer untergeordnet. Diese Struktur wäre abzubilden. Jetzt könntest Du eine Tabelle erstellen, in der Du Zimmer und Geräte mit einem Datum unterordnest. Dieser Konstellation könnten dann ein oder mehrere User in einer weiteren Tabelle zugeordnet werden. Ähnlich verfährst Du mit den Kosten.

Daniel the Gecko
14.03.2003, 10:20
Ich habe mir das noch mal genau überlegt was du angesprochen hast, aber so einfach ist das je nicht.
Denn
1. Sind die Standorte zwar eindeutig aber nicht unbedingt auf einer Station
2. Sind die Stationen nicht alle unbedingt in einer Etage
3. sind die Kostenstellen nicht unbeingt für nur einen Standort zuständig
usw

Das ist hier ziemlich kompliziert, deshlb hatte ich meine Tabelle soweit gehend normalisiert. das ich nur noch Auswahlfelder bzw Listenfelder habe.

Die Datei die ich angehangen hatte war ja nur ein Teil meiner DB, da ist nach einiges mehr dran.

Zu deiner Zip:
Auch diese habe ich mir genau angesehen, aber ehrlich gesagt kann ich keine Änderung feststellen auser im Unterformular. Das hat soweit keinen Namen und hast du als Endlosformular deklariert. Die Datenherkunft ist aus der Drucker- Abfrage. Ist das soweit richtig?

Der Code ist ja noch der selbe da ist ja nichts geändert.
War ich wirklich nur so blöd , das Ufo nicht als Endlosform zu deklarieren?

Noch ne Frage :
Wenn ich das jetzt noch weiter spezifizieren möchte, das heist ich habe jetzt Drucker gewählt, und möchte über das Textfeld eine genauere selktierung machen zum Beispiel nach Laser oder Kostenstelle.
Geht es das ich per VBA diese Selektierung um Ufo weiter fortsetzen kann?

Weist du da RAT?