Office: Doppelklick abfangen

Helfe beim Thema Doppelklick abfangen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, Bei Klick auf ein Steuerelememt wird ein neuer Datensatz angelegt. Nun möchte ich ausschliessen das jemand versehentlich das... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Michael, 12. September 2003.

  1. Doppelklick abfangen


    Hallo zusammen,
    Bei Klick auf ein Steuerelememt wird ein neuer Datensatz angelegt.
    Nun möchte ich ausschliessen das jemand versehentlich das Steuerelememt
    zweimal hintereinander anklickt und zwei neue Datensätze angelegt werden, wer kann mir dazu Hilfestellung geben.
    mfg,
    Michael

    :)
     
  2. Und für was gibt es das Ereignis "Beim Doppelklick" ?
    Und was soll denn das mit dem neuen DS bei Doppelklick?
    Für was gibts Buttons?

    Gruß Andreas
     
  3. Ich dachte das ich mich deutlich ausgedrückt hätte.
    Aber nochmals:

    Befehlschaltfläche (mit Code zum anlegen eines neuen Datensatzes) -->
    Nun möchte ich verhindern das jemand versehentlich diese Befehlschaltfläche zweimal hintereinander mit der Maus (2mal = Doppelklick) auslöst und somit zwei neue Datensätze anlegt.

    mfg,
    Michael
     
  4. Doppelklick abfangen

    Wenn Du den neuen Datensatz mit Standardmitteln (z.B. DoCmd.GotoRecord , , acNewRec) anlegen würdest, hättest Du den Effekt nicht!

    Du mußt also irgendetwas in dem Ereignis machen, was dort nicht hingehört, wenn Du diesen Effekt nicht haben willst.

    Gruß

    Arno
     
  5. Hallo,
    nicht nur der Button sondern Textfelder, Labels, Kombis... gehören zu den Steuerelementen - nur soviel dazu.
    Um zu verhindern, dass jemand zu schnell hintereinander auf den Button clickt, kannst du den Code abhängig vom Timerinterval und einer Boolschen Variablen machen.

    Ich hab dir mal ein Beispiel gebastelt.

    Gruß Andreas
     
  6. Hallo Andreas,

    nichts für Ungut, aber wenn er seine DB sauber erstellen würde - d. h. die Aktionen in die Ereignisse in die sie gehören - hätte er IMHO, wie bereits gesagt, kein Problem.

    Er führt im Click-Ereignis des Buttons mit Sicherheit Vorbelegungen für den neuen Datensatz aus, welche dort nicht hineingehören.

    Da er aber keine Auskunft darüber gibt, was er dort macht, kann man ihm an der Stelle auch nicht helfen.

    Das drumherumdoktern mit Timerereignissen - welche IMHO hier auch voll und ganz überflüssig sind - und boolschen Variablen, verschleppt das Problem nur an andere Stelle. Besser sollte er mal seine Ereigniss- und Datensteuerung offenlegen und aufräumen.

    Gruß

    Arno
     
  7. Hi Arno,
    erstmal guten Morgen.

    Das ist leider zu oft der Fall, dass die Frager viel zu wenig Input liefern, bzw. davon überzeugt sind, in der Sache keinen Fehler gemacht zu haben. Und dann bekommt er eben die Antwort die er möchte, ob es ihm letztendlich hilft oder nicht.

    Gruß Andreas
     
  8. Doppelklick abfangen

    Danke euch allen,
    Problem mit msgbox gelöst.
    Lösungsansatz:

    Dim PPAP_Nr_UE As Integer
    Dim PPAP_Nr_Str1 As String

    Set WS11 = DBEngine.Workspaces(0)
    Set DB11 = WS11.Databases(0)
    Set RS11 = DB11.OpenRecordset("UEberwachung_eingabe", DB_OPEN_DYNASET)

    If RS11.RecordCount = 0 Then
    PPAP_Nr_UE = 0
    Else
    RS11.MoveLast
    PPAP_Nr_UE = CInt(Right(RS11("PPAP_Nr_UE"), 4)) + 1
    End If

    PPAP_Nr_Str1 = CStr(PPAP_Nr_UE)
    If Len(PPAP_Nr_Str1) < 5 Then
    Do Until Len(PPAP_Nr_Str1) = 4
    PPAP_Nr_Str1 = "0" + PPAP_Nr_Str1
    Loop
    End If

    PPAP_Nr_Str1 = "" + Right(CStr(Year(Date)), 2) + PPAP_Nr_Str1

    '*************************************************************************

    WS11.BeginTrans
    RS11.AddNew
    RS11("PPAP_Nr_UE") = PPAP_Nr_Str1
    RS11.Update
    WS11.CommitTrans

    '*************************************************************************
    DoCmd.OpenForm "frm_PPAP_Kopf", , , "[PPAP_Nr] =""" + PPAP_Nr_Str + """"

    '*************************************************************************
    DoCmd.Hourglass False



    MsgBox "Laufende Nummer wurde erstellt:", vbOKOnly + vbInformation, "Information "
     
  9. Und bei der - zwar möglichen, aber nichtsdestotrotz am falschen Ort (Ereigniss) platzierten - Vorbelegung der laufenden Nummer im Click-Ereignis des Buttons, krankt die ganze Geschichte.

    Die Erstellung der laufenden Nummer gehört in das "Vor Eingabe"-Ereigniss des Formulars, so das a) die lfd. Nummer erst angelegt wird, wenn wirklich Eingaben vorgenommen werden und b) das Formular ohne anlegen eines Datensatzes wieder verlassen werden kann. Alles andere führt ggf. zu Datensatzleichen.

    Noch besser ist es IMHO jedoch der Datenstruktur ein Autowert-Feld hinzuzufügen, dessen Wert vom System vergeben wird, sobald ein neuer Datensatz mit dem ersten Zeichen gefüllt wird. Im Ereigniss "Nach Eingabe" wird dann über diesen - dann bereits bekannnten - Autowert der entsprechende Satz mit der zu geniererenden laufenden Nummer eigenen Formates ergänzt, so das auch Eingabeabbrüche nicht zu Unterbrechungen im Nummernkreis führen.

    Gruß

    Arno
     
  10. Grundsätzlich hat Arno Recht.

    Doch, falls Du nicht anders willst, trotzdem als Vorschlag, um Deinen Code etwas zu verkürzen

    Code:
    "RS11.MoveLast" muß nicht zwangsläufig der höchste Wert sein, wenn nicht sortiert wurde!
     
    Johnny Loser, 13. September 2003
    #10
  11. Hallo,

    welcher Natur sind denn Deine Daten? Was ist der Sinn und Nutzen der Zeichenkettenverknüpfung und wo(für) wird der Wert überhaupt benötigt?

    Ich warne davor, diesen Konstrukt als Primärschlüssel zu verwenden. Die Tabelle(n) wäre(n) auf Gedeih und Verderb an eben dieses eine Formular gebunden. Cascading Updates wäre nebst referentieller Integrität als Beziehungseigenschaft anzugeben, falls jemand auf die Idee kommt, den Wert zu ändern. Ein Primärschlüssel hat inhaltlich nichts mit den anderen Attributen des Datensatzes am Hut. Er dient lediglich der eindeutigen Identifizierung. Versuche, die Datenstruktur möglichst einfach und unabhängig zu halten, dann ist der Weg zum Ziel nicht so steinig.

    Ich würde nebst einem nichtanzuzeigenden Autowert als Primärschlüssel bei der Neuanlage eines Datensatzes auch den Zeitpunkt seiner Erstellung festhalten, womit gleiche Spielchen (Berechnungen), wenn nötig, angestellt werden können wie in Deinem Kode, ohne zunächst eine einzige Zeile Kode dafür zu ver(sch)wenden. Letztendlich stellt auch ein Erstellungsdatum nebst Zeit genauere Information als Deine künstliche Nummer zur Verfügung und beansprucht etwas weniger Speicherplatz in der Tabelle.

    Wie sortierte Recordsets in Formularen bzw. Berichten durchnummeriert werden können, ist im Forum, der FAQ und anderen Access-Seiten im WWW vielfach beschrieben - die Such-Funktion des Forums, Google u.a. sollten diesbezüglich weiterhelfen.

    Wenn es nicht anders geht und wirklich nur dann, wäre Johnnys X-Berechnung als Standardwert im entsprechenden Steuerelement im Formular IMHO besser aufgehoben. Das Steuerelement sollte die Eigenschaft Locked Ja und Enabled Nein besitzen, damit niemand drin rumpfuschen kann. Für jedes Hinzufügen von neuen Daten in diese Tabelle müßte die gleiche Funktionalität gewährleist werden.

    @Arno
    Beim Autowert als Berechnungsgrundlage müßte sichergestellt sein, dass er weder eine Replikations-ID noch einen Zufallswert repräsentiert.
     
  12. Norbert,

    der Autowert sollte keine Berechnungsgrundlage darstellen, sondern lediglich einen eindeutigen Primarykey.

    Slng

    Arno
     
  13. Doppelklick abfangen

    Ist mir grade aufgefallen:

    Der Wert wird in das Feld PPAP_Nr_UE einer Tabelle geschrieben.
    In der WHERE-Klausel steht PPAP_Nr = ...

    Wie kommt der neue Wert in das andere Feld?
    Sind es unterschiedliche Tabellen?
     
    Johnny Loser, 14. September 2003
    #13
Thema:

Doppelklick abfangen

Die Seite wird geladen...
  1. Doppelklick abfangen - Similar Threads - Doppelklick abfangen

  2. VBA Textbox macht was sie will

    in Microsoft Excel Hilfe
    VBA Textbox macht was sie will: Hallo, ich bin ein Neuling bei VBA auch Excel habe ich bisher nie so intensiv benutzt wie in den letzten Wochen. Ich sitze jetzt schon länger vor einem Problem, welches ich weder mit Hilfe des...
  3. Text Formatverlust nach Doppelklick

    in Microsoft Excel Hilfe
    Text Formatverlust nach Doppelklick: Moin zusammen Ich habe ein spezielles Problem mit formatiertem Text als Spaltenüberschrift. Ein Access-Makro liefert mir aus einer DB den Inhalt für Excel. In den Spaltenüberschriften lasse ich...
  4. Formular mit bestimmten Datensatz durch Doppelklick öffnen

    in Microsoft Access Hilfe
    Formular mit bestimmten Datensatz durch Doppelklick öffnen: Hallo zusammen, ich bin ganz neu hier und hoffe ich drücke mich verständlich aus, falls nicht, lasst es mich gerne wissen. Ich möchte eine Datenbank aufbauen, in der ich Personendaten erfassen...
  5. Makro durch Doppelklick auf Zelle starten

    in Microsoft Excel Hilfe
    Makro durch Doppelklick auf Zelle starten: Hej Zusammen! Ich habe eine Tabelle mit vielen Einträgen. Bei einem Doppelklick auf irgendeine Zelle in dieser Tabelle soll ein Makro gestartet werden. Das Makro bezieht sich dann wieder auf die...
  6. zwei Klicks bei Anmeldung

    in Microsoft Access Hilfe
    zwei Klicks bei Anmeldung: Hallo zusammen, habe eine Frage zu folgendem VBA-Code: Private Sub cmdAnmelden_Click() On Error GoTo Err_cmdAnmelden_Click Dim tbBenutzer As String Dim tbpw As String Dim stDocName As...
  7. VBA - Excel Tabelle in PPT durch Doppelklick in Excel öffnen

    in Microsoft PowerPoint Hilfe
    VBA - Excel Tabelle in PPT durch Doppelklick in Excel öffnen: Hallo, ich habe folgendes Problem und hoffe es kann mir vielleicht jemand weiterhelfen. Ich habe eine PPT Präsentation mit einer Excel Tabelle (keine normale Tabelle). Die Excel Tabelle ist...
  8. Grüner Haken bei Doppelklick

    in Microsoft Excel Hilfe
    Grüner Haken bei Doppelklick: Hallo Forum, Ich möchte in Zellen der Spalte H, ab der zweiten Zeile, per Doppelklick einen grünen Haken einfügen . Anbei mein Code. Was ist falsch. Kann mir jemand einen Tipp geben? Private Sub...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden