collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 60
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14548
  • stats Beiträge insgesamt: 73006
  • stats Themen insgesamt: 9856
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 443

Autor Thema: VBA Prozeduren einsetzen aber wo ?  (Gelesen 12691 mal)

Offline samurai

  • Newbie
  • Beiträge: 46
VBA Prozeduren einsetzen aber wo ?
« am: Juli 27, 2012, 09:24:28 »
Hallo, auf die Gefahr hin das ihr mich steinigt oder sonst was macht weil diese Frage evtl schon tausendfach gestellt wurde, ich aber bei der Suche nach einer Antwort völlig überfordert bin, muss ich hier jetzt mal die Frage stellen, wo denn die VBA Befehle bzw. Prozeduren rein geschrieben werden. Ich bin gerade dabei mich mit 'Access zu beschäftigen und stehe noch am Anfang.

Ich habe eine einfache Datenbank gebaut mit einer Tabelle ( Fahrer ) und einer Tabelle ( Fahrerdaten ). Die Abfrage über das Listenfeld funktioniert ja auch alles ganz schön. Ich kann neue Daten erfassen und auch Daten löschen. Das funktioniert alles über die jeweiligen Button.
Nun möchte ich, wenn ich den Button " DATENSATZ LÖSCHEN " betätige, dass eine Messagebox erscheint mit der Frage " Datensatz wirklich löschen ? " und den Button "Ja" welcher dann wirklich den Datensatz löscht, und dem Button "Abrechen" welcher dann wieder zurück zum Datensatz springt.

1. Frage wenn ich jetzt diesen Befehl habe, wo muss ich den einfügen bzw. reinschreiben.
Muss ich in der Entwurfansicht den Button löschen anklicken dann auf Ereignisprozedur gehen?
An welche stelle schreibe ich das dann?
 
Zur zeit sieht das so aus

Option Compare Database

Private Sub löschen_Click()

   
End Sub

Oder bin ich völlig falsch?
In den Büchern wird immer alles ganz toll beschrieben wie das Auszusehen hat, aber nicht an welche Position das geschrieben wird. Oder ist das letztendlich völlig Wurst und man scheibt das alles einfach untereinander?

Bitte helft mir. Ganz großes Danke schon mal vorab.
Samurai.
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1909
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #1 am: Juli 27, 2012, 09:38:20 »
Hallo,

die sub bitte ergänzen um:

Private Sub löschen_Click()
  Dim Antwort as string
  
   Antwort = MsgBox ("Löschen", vbYesNo)

   if Antwort = vbYes then
      MsgBox "Ja"  ' hier muß eine Löschroutine hin: hast Du das?
   else
      MsgBox "Nein"
   end if

End Sub

Harald
Servus
 

Offline samurai

  • Newbie
  • Beiträge: 46
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #2 am: Juli 27, 2012, 09:39:06 »
Hier mal die komplette Prozedur der Datenbank.


Option Compare Database

Private Sub öffnen_Click()
On Error GoTo Err_öffnen_Click


    stDocName = "tblFahrerdaten"
   

Exit_öffnen_Click:
    Exit Sub

Err_öffnen_Click:
    MsgBox Err.Description
    Resume Exit_öffnen_Click
   
End Sub
Private Sub Bericht_drucken_Click()
On Error GoTo Err_Bericht_drucken_Click

    Dim stDocName As String

    stDocName = "tblFahrerdaten"
    DoCmd.OpenReport stDocName, acNormal

Exit_Bericht_drucken_Click:
    Exit Sub

Err_Bericht_drucken_Click:
    MsgBox Err.Description
    Resume Exit_Bericht_drucken_Click
   
End Sub
Private Sub bericht_öffnen_Click()
On Error GoTo Err_bericht_öffnen_Click


    stDocName = "berFahrerdaten"
   

Exit_bericht_öffnen_Click:
    Exit Sub

Err_bericht_öffnen_Click:
    MsgBox Err.Description
    Resume Exit_bericht_öffnen_Click
   
End Sub

Private Sub cmdloeschen_Click()

End Sub


Private Sub cmdneu_Click()

End Sub

Private Sub Form_Load()


 
End Sub


Private Sub Form_Open(Cancel As Integer)
On Error GoTo Err_Form_Open
    DoCmd.GoToRecord , "", acNewRec

Exit_Form_Open:
    Exit Sub
Err_Form_Open:
    MsgBox Error$
    Resume Exit_Form_Open
End Sub

Private Sub Mitarbeiterliste_AfterUpdate()

End Sub

Private Sub lstMitarbeiterliste_AfterUpdate()

End Sub
 

Offline samurai

  • Newbie
  • Beiträge: 46
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #3 am: Juli 27, 2012, 09:42:05 »
Hallo Harald, habe das jetzt eingefügt. Was ist eine Löschroutine ? Ich glaub ich habe so etwas nicht.
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1909
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #4 am: Juli 27, 2012, 09:46:57 »
Hallo,

anbei ein Vereinfachungsvorschlag:

Im Formular nutzt Du das Ereignis "Vor Löschbestätigung":
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
    Dim Antwort As String
    
    Antwort = MsgBox("Löschen ?", vbYesNo)
    Cancel = Not Antwort = vbYes
End Sub

Dann sollte vor dem Löschen die Frage "Löschen ?" angezeigt werden.
Wenn "Nein" angeklickt wurde, ist Antwort nicht Ja, also wird cancel auf true gesetzt, d.h. es wird nicht gelöscht, ansonsten wird gelöscht.

Ist Dir damit geholfen?

Harald
Servus
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8183
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #5 am: Juli 27, 2012, 09:52:51 »
Hallo,
oder ganz einfach so:
Private Sub Löschen_Click()
    If MsgBox("Soll der Datensatz wirklich gelöscht werden ?", vbYesNo) = vbYes Then
        DoCmd.RunCommand acCmdDeleteRecord
    End If
End Sub

Und da Du Anfänger bist, warum soll ein Datensatz gelöscht werden?
In einer DB werden im Regelfall nur falsche Daten gelöscht.
Gruß
Klaus
 

Offline samurai

  • Newbie
  • Beiträge: 46
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #6 am: Juli 27, 2012, 10:17:20 »
Warum sollen Daten gelöscht werden. Weil z.B. einige der Fahrer nicht mehr vorhanden sind, wegen Rente oder Tod etc.
Da dies nur einie Datenbank für ein sehr kleinen Personenkreis ist und diese Daten nicht unbedingt gespeichert werden müssten.

Aber die Frage ist berechtigt und ich muss zugeben das ich mir darüber nicht wirklich gedanken gemacht habe. Da das Datenvolumen ja nicht immens groß ist, sollte ich mir das mit dem löschen noch einmal überlegen. Evtl. kommt auch eine msgbox mit dem Hinweis "Wollen sie wirklich die Daten überschreiben? "  in Frage.

Das Problem ist eigentlich ganz einfach. Mein Vorgestzter und einige andere sind immer sehr schnell mit dem schreiben und und klicken, dann ist ein Datensatz mal eben schnell gelöscht oder Daten sind überschrieben.
Samurai.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8183
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #7 am: Juli 27, 2012, 10:27:44 »
Hallo,
Zitat
Warum sollen Daten gelöscht werden. Weil z.B. einige der Fahrer nicht mehr vorhanden sind, wegen Rente oder Tod etc.
In diesen Fällen solltest Du das Löschen unterlassen. Wenn es Tabellen mit Beziehungen gibt, ist es auch so ohne weiteres möglich Datensätze zu löschen.
Führe in der Tabelle ein Feld mit dem Namen Status und ein Datumsfeld.
Dort schreibst Du dann rein Rente und das Datum dazu.

Genau genommen sind hier weitere Tabellen erforderlich z.B. für die möglichen Status.

Was hast Du denn bis jetzt für Tabellen mit welchen Feldern und Beziehungen.
Es stellt sich auch die Frage, wie unterscheiden sich die beiden Tabellen Fahrer und Fahrerdaten ?
Gruß
Klaus
 

Offline samurai

  • Newbie
  • Beiträge: 46
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #8 am: Juli 27, 2012, 10:33:07 »
Also ich habe jetzt alles ausprobiert ich bekomme keine MSG Box angezeigt, noch werden die Datensätze gelöscht.
Ich komme da irgendwie nicht weiter was das löschen betrifft bzw. das Anzeigen der MsgBox.
Verstehe ich das jetzt richtig, dass die Befehle im Prinziep unter Privat Sub bzw. über End Sub geschrieben werden ?
könnte es evtl daran liegen das ich mit Access 2007 arbeite und hier Makros verwendet werden ? Damit kann ich nun überhaupt nix anfangen. Kann man Makros deaktivieren?
Samurai




 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8183
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #9 am: Juli 27, 2012, 10:38:31 »
Hallo,
Zitat
Verstehe ich das jetzt richtig, dass die Befehle im Prinziep unter Privat Sub bzw. über End Sub geschrieben werden ?
Ja, genau ist in meinem Code ja zweifelsfrei zu erkennen.

Was steht denn in der Zeile "Beim Klicken" des Löschen Buttons?
Gruß
Klaus
 

Offline oma

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4020
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #10 am: Juli 27, 2012, 10:47:18 »
Hallo,

da man auf verschiedene Weise einen DS löschen kann (auch ohne Löschbutton) , ist der Vorschlag von Harald in #4 schon der bessere Weg.

Gruß Oma
nichts ist fertig!
 

Offline samurai

  • Newbie
  • Beiträge: 46
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #11 am: Juli 27, 2012, 10:48:43 »
@MzKlMu

O.K. Sieht folgender Maßen aus: eine Tabelle mit folgenden Spalten. Name, Vorname, Telefonnr., Dienstleiter, Tournr. .
Also eine Tabelle welche den Namen Fahrer hat. In dieser Tabelle sind eben die Fahrerdaten hinterlegt. Im Formular wird ein Listenfeld angezeigt welches die Daten, Name und Vorname anzeigt.
Daneben sind dann die Felder mit den weiteren Informationen wie Name, Vorname, Dienstleister Telefonnr. ,Tour. angelegt. Hier kann man nun ( oder so sollte es sein ) die neuen Fahrer eingeben und speichern, oder Fahrer suchen lassen. Das problem dabei ist, wenn ich jetzt einen Fahrer aus dem Listenfeld auswähle, diesen dann löschen möchte, soll ein Hinweis erscheinen ( msg Box ) " Wirklich löschen ? " oder ähnliches. Und das funktioniert eben nicht.  Es gibt 3 Button: suchen, neu, löschen.
Bei suchen geht alles wunderbar ich gebe den Namen ein und er erscheint rechts in den Feldern. Bei neu auch alles gut, ich erhalte ein leeres Feld und kann auch die Daten eingeben und diese werden dann nach neustart angezeigt. Beim löschen geschieht irgendwie gar nichts. Ich wähle mir einen Namen aus, klicke auf löschen, aber nichts geschieht. Auch nach dem Neustart von Access steht der Name nach wie vor in der Datenbank.
Also es ist eine Tabelle. Das andere kommt später, erst einmal möchte ich mit der kleinen Form beginnen.
Samurai
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1909
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #12 am: Juli 27, 2012, 10:52:03 »
Hi,

vielleicht hilft das Beispiel im Anhang.
Dort ist eine a2003-Datei und ein Word-Dokument mit einer Kurzanleitung.

Harald

[Anhang gelöscht durch Administrator]
Servus
 

Offline samurai

  • Newbie
  • Beiträge: 46
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #13 am: Juli 27, 2012, 10:52:19 »
Private Sub löschen_Click()

    If MsgBox("Soll der Datensatz wirklich gelöscht werden ?", vbYesNo) = vbYes Then
        DoCmd.RunCommand acCmdDeleteRecord
    End If
  
End Sub

Das habe ich jetzt so eingefügt.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8183
Re: VBA Prozeduren einsetzen aber wo ?
« Antwort #14 am: Juli 27, 2012, 11:00:28 »
Hallo,
Du hast meine Frage nicht beantwortet:
Zitat
Was steht denn in der Zeile "Beim Klicken" des Löschen Buttons?

Zitat
Also es ist eine Tabelle. Das andere kommt später, erst einmal möchte ich mit der kleinen Form beginnen
Das dürfte der falsche Weg sein. Erst sollten das Datenmodell mit allen Tabellen und Beziehungen vollständig erstellt sein, dann kann man erst mit den Formularen beginnen.
Zitat
eine Tabelle mit folgenden Spalten. Name, Vorname, Telefonnr., Dienstleiter, Tournr. .
Da ein Fahrer ja wahrscheinlich mehrere Touren haben kann, hat die Tournummer in der Fahrertabelle nichts zu suchen. Und auch beim Dienstlieter habe ich so meine Zweifel. Zumindest sollte es eine Tabelle geben mit allen Dienstleitern. In die Fahrertabelle kommt dann nur ein Fremdschlüssel zum Dienstleiter.

Du solltest Dich dringend mit den Grundlagen zur Erstellung einer relationalen Datenbank beschäftigen.
Gruß
Klaus
 

 

Benutzerverwaltung erstellt, aber sie greift nicht

Begonnen von mradlmaierBoard Access-Hilfe

Antworten: 0
Aufrufe: 2868
Letzter Beitrag Mai 17, 2010, 15:39:04
von mradlmaier
Zugriff auf Form erlauben, aber auf die zugehörige Tabelle sperren

Begonnen von mradlmaierBoard Access-Hilfe

Antworten: 10
Aufrufe: 12435
Letzter Beitrag Mai 21, 2010, 17:40:38
von mradlmaier
Bei Formular minimieren die Anwendung minimieren, aber WIE ???

Begonnen von Muhtar99Board Access-Hilfe

Antworten: 7
Aufrufe: 7058
Letzter Beitrag Mai 31, 2010, 13:02:09
von Hondo
Baumstruktur Treeview aufbauen aber wie???

Begonnen von Muhtar99Board Access Programmierung

Antworten: 1
Aufrufe: 5604
Letzter Beitrag Juli 06, 2010, 20:32:29
von DF6GL
Automatisches Eintrage4n des aktuellen Datums - aber wie?

Begonnen von Axel18Board Formular

Antworten: 9
Aufrufe: 5475
Letzter Beitrag Juli 20, 2010, 11:03:20
von Axel18

Advertisment / Werbung - Amazon Affiliate Links