PDA

Vollständige Version anzeigen : Doppelte Ausführung über eigene Leiste


TGA_Project
18.06.2001, 15:27
im einsatz: A00

hallo,
ich habe mir eigene symbolleiste erstellt und rufe eine vba-funktion über ein makro ("code ausführen") auf. problem: ich komme immer 2x (!!) in die vba-routine rein. somit öffnet sich ein modales fenster, man macht es zu und es kommt ein 2tes mal. habe es debuggt und ich komme wirklich 2x mal in die routine.

kennt jemand diesen effekt bzw. weiss jemand rat ? kann im forum dazu nichts finden und viel falsch machen kann man dabei nun wirklich nicht.

danke im voraus,
mario

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

ElHefe
18.06.2001, 17:08
hi mario!

vielleicht solltest du mal den code posten!
mfg

ElHefe
18.06.2001, 17:11
hi mario!

hab nochmal ne question:
wie werde ich den Mitglied auf deiner Page???

(Deine Site is ja richtig cool! bist voll der java-crack, oder?

TGA_Project
19.06.2001, 07:10
grüß dich ElHefe,

code posten ? leider gibt es da keinen code. der leistenpunkt oben führt das Makro X aus, in dem eine zeile steht: "code ausführen" und dann die funktion. in der funktion wird dann ein

docmd.openform... (modal)

ausgeführt. leider eben 2x !

Homepage: schreib mir doch einfach eine mail an mario.mazet@devsource.de, dann nehme ich dich auf. sorry, dass noch kein link auf den mitglieds-punkten ist. bin gerade erst dabei, die seite soweit aufzubauen. java-freak: naja, bin ziemlich schlecht, da vieles unter netscape nicht funktioniert. gute leute bekommen es auf beiden browsern hin. aber soviel zeit habe ich dann auch wieder nicht ;-) mein bereich sind eher delphi + access.

warte auf deine mail

cu
mario

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

ElHefe
19.06.2001, 15:21
hi mario!

hab leider immoment keine zeit!
bin heut abend ab 21 uhr wieder online!

ich schick dir heute abend ne mail!
bis denne!

Bernd Koch
19.06.2001, 22:38
Hast du denn schon mal versucht, dein Formular - ganz ohne Makro und Code - einfach aus dem Datenbankfenster nach oben in die Symbolleiste zu ziehen?! Es ist am Mauszeiger (ganz wie in Winword beim Kopieren mittels drag&drop) so ein Rechteck mit ´nem Pluszeichen dran. Laß es irgendwo in der Symbolleiste fallen. Danach kannst du es per "Anpassen" an der richtigen Stelle platzieren, umbenennen etc.

Vielleicht klappt es ja auf diese Weise.

Bernd

TGA_Project
20.06.2001, 12:07
Hallo Bernd,

hey, das hat sogar geklappt. Das geht aber leider nur mit Formularen. Ich habe da aber noch andere Funktionen, die mehr als nur ein Formular öffnen (Datensätze editieren usw...). Und da komme ich ebenfalls 2x in den Code rein.

Sonst noch eine Idee, die mit den Formularen ist schonmal nicht schlecht. Obwohl ich dort noch nicht gesehen habe, wo ich den Stil (Modal, Vollbild,...) einstellen kann. Es steht beim Menüpunkt lediglich im Parameter der Formularname.

Ist mir unverständlich, wieso das Problem noch keiner hatte.

Danke Bernd,

CU
Mario

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

Bernd Koch
20.06.2001, 21:57
Das Problem ist, dass ich dein Problem nicht nachvollziehen kann. Was ich auch anfange (eigene Symbolleiste, unterschiedlicher Code etc) bei mir klappt es und es kommt nicht doppelt. Da ist guter Rat natürlich teuer.

Hast du schon mal die "Gewaltkur" probiert und alles in eine neue DB importiert??

Immerhin die Minimallösung mit dem Formular:
Einstellen im Symbol kannst du in der Tat nichts, es öffnet einfach das Formular. Aber im Formular könntest du doch "Gebunden" und "Popup" auf JA stellen - dann ist es modal; oder ´ne ganz normale Ereignisprozedur BeimÖffnen um es zu maximieren usw.

Falls du das Formular in anderen Zusammenhängen mit anderen Einstellungen brauchst, wäre für den obigen Fall vielleicht eine Kopie des Formulars sinnvoll. Ich weiß, ist alles ´ne Krücke aber vielleicht hilft es so lange, bis du das eigentliche Problem rausgekriegt hast.

Für die anderen Funktionen, die über´s Formular öffnen hinausgehen fällt mir im Moment auch noch nichts ein. Ich probiere aber mal weiter rum.

Bernd

Noch ein Gedanke:
Taucht das Problem denn auch auf, wenn du das Makro aus dem Datenbankfenster ausführst und nicht von deiner Leiste aus?

Zweiter Gedanke:
hast du schon mal versucht, deinen Formularaufruf oder die anderen Sachen in eine Access-eigene Symbolleiste oder die Menüleiste einzufügen - ist dann der selbe Effekt da?

Irgendwie müsste man ja eingrenzen, woran es liegt, an der eigenen Leiste, am Makro ...

TGA_Project
25.06.2001, 14:17
Hallo Bernd,

herzlichen Dank erstmal für Deine Unterstützung. Als ich das Makro per Hand ausführen wollte, bekam ich die Fehlermeldung "Access kann die angegebene Funktion nicht finden". Äußerst komisch. Ich habe Code_Ausführen verwendet und rufe "Form_Auftraege (2)" auf. Hier der Funktionsheader, der im Formular drinliegt:

Public Sub Form_Auftraege(aiAktion As Integer)

Warum klappt es nicht manuell, das Menü ruft es doch auf, sogar 2x. Bald blicke ich nicht mehr durch. In eine neue DB exportieren ist leider gesagt als getan, die Menüs stehen soweit schon und die DB ist sehr umfangreich. Habe an sich keine Lust & Zeit, alle Menüs neu aufzusetzen (oder kann ich die Leisten mitkopieren, wenn ja wie ?). Ob ich die Sachen vom Access-eigenen aufrufe oder nicht ändert nichts daran. 2x wie immer !

Ich habe noch einige weitere solche Probleme, wodurch ich immer weniger von A00 überzeugt bin.

CU
Mario!

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

Bernd Koch
25.06.2001, 20:23
Es ist immer das gleiche Problem: wenn man so eine DB nicht sieht, stochert man ziemlich in der Gegend rum.

Zumindest drei Sachen:

- Access meldet, es könne die F u n k t i o n nicht finden, du hast aber ´ne Sub. Klingelt´s? Ändere einfach mal das Wörtchen Sub auf Function.

- Ist die Sub (zukünftige Function) im Klassenmodul? Packe sie mal (ausschließlich) in ein allgemeines Modul.
Oder: ist sie vielleicht sogar schon in beiden drin (und öffnet sich deshalb zweimal?)

- Du kannst auch Menü- und Symbolleisten importieren.
Wenn du auf Datei/Externe Daten/Importieren gehst und dort die DB öffnest, aus der du importieren willst, kommt ja das Fenster "Objekte importieren". Dort rechts die unterste Schaltfläche heißt "Optionen". Wenn du die anklickst, kannst du auch "Menüs und Symbolleisten" auswählen.

Falls das immer noch alles nicht klappt, bau doch mal ´ne kleine Demo-DB zusammen, bei der dein Problem auch auftaucht und schick sie mir.

baerenverlag.koch@t-online.de

Bernd

TGA_Project
26.06.2001, 07:13
Jawohl Bernd, KLAPPT ! Der Hinweis mit der F u n k t i o n und der Sub war gold wert. Ich habe es auf Function geändert und nun wird die Routine nur 1x aufgerufen. Da wäre ich ohne Dich wohl erst ziemlich spät drauf gekommen.

Riesen Dank an Dich,
Mario !

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

Birgit Dannenberg
26.06.2001, 07:30
Merke:

Ein wichtiger Grund für die Wahl einer FUNCTION ist z.B. die Aufrufmöglichkeit über Menüleisten und Formulareigenschaften (statt Ereignisprozedur) etc. - unabhängig von evtl. Rückgabewerten!!

Darum schreibe ich eigentlich nur Functions, um nicht jedesmal über evtl. (spätere) Einsatzmöglichkeiten des Codes nachdenken zu müssen. ;)

Birgit

TGA_Project
26.06.2001, 07:43
@Birgit

Da ich aus "erwachsenen" Programmiersprachen (C++, Pascal) komme, fehlt mir bei vielen Codestrukturen unter Access einfach der logische Aufbau.

Wozu brauche ich eine Funktion, um sie über eine Symbolleiste aufzurufen, wenn der Rückgabewert beliebig sein kann ? Wenn das Ergebnis der Funktion nicht ausgewertet wird, ist eine Funktion nicht notwendig. Ich programmiere schon seit 8 Jahren und verzweifele manchesmal am Zusammenklicken in Access. Mal muss man mit Refresh, dann wieder mit Requery, manchmal geht RecordSet, manchmal nur RecordSetClone. Sehr sehr unstrukturiert, was Microsoft da abliefert.

Mal sehen, ob VB besser aufgebaut ist. Access ist und bleibt oft ein "Haste das so schon ausprobiert?"-Programm. Daher sind solche Foren wie dieses hier auch Gold wert.

Bis demnächst zu einem neuen Problem,
Mario !

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

Birgit Dannenberg
26.06.2001, 10:30
Ich kann Dir im Prinzip nur Recht geben, Mario. Was habe ich schon alles an Zeit vergeudet, durch Herumprobieren mangels Verständnis der VBA/Access-Logik!! Da erlebt man doch immer wieder Überraschungen...

Aber es hilft nichts, darüber zu lamentieren ;) - machen wir das Beste draus!

Birgit