Nyx_Autumn Geschrieben 17. November 2010 Teilen Geschrieben 17. November 2010 Hi, ich habe eine Datenbank, welche ich dazu nutze bestimmte Informationen aus einer Backend zu holen und diese dann an Word weiter zu geben, damit ich daraus Vorlagen drucken kann, die dann eben durch Textmarken mit den Daten gefüllt werden. Da habe ich nun einen E-Mail- wie auch Benutzernamengenerator eingebaut. Da die Daten nicht in die Haupttabelle dürfen – zu der wir eine Verknüpfung haben – ist in der Datenbank selbst eine Tabelle angelegt worden, die eben die weiteren Informationen aufnehmen kann. Über eine Abfrage sind beide miteinander verbunden und darauf ist ein Formular gelegt. Nun gab es das Problem, dass die zusätzliche Tabelle die verknüpften Daten nicht beinhaltet und sie auch nicht alle aus der Haupttabelle haben soll. Also musste eine Lösung her. Hier haben wir nun ein ‚User anlegen’ Button eingebunden, der nur die PersNr übergibt an die zusätzliche Tabelle. Dies lief auch wunderbar. Ich konnte danach die Mail generieren und auch ändern. Nun fanden wir einen Fehler und ich durfte neu anfangen. Ich hab alles genauso gemacht – da ich die Daten aus der alten Datenbank holen konnte – und eine neue aufgesetzt. Hier jedoch stellt sich ein Problem raus. Ich kann die PersNr an die zusätzliche Datenbank übergeben. Und nur ab und an lässt er die Mail generieren. Selbst das händische eintragen geht nicht und wenn ich mal eine Mail generiert bekomme, kann ich diese nicht bearbeiten. Code zum User anlegen: Private Sub UserAnlegen_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim qdf As DAO.QueryDef Set db = CurrentDb Set qdf = db.QueryDefs("Abfrage1") qdf.Parameters!qryPersNr = PersNr qdf.Execute qdf.Close: Set qdf = Nothing Set db = Nothing 'Aktualisieren Me.Requery End Sub Die Abfrage1 schaut wie folgt aus: INSERT INTO tbITerweitert ( PersNr ) SELECT Haupt.PersNr FROM Haupt LEFT JOIN tbITerweitert ON Haupt.PersNr = tbITerweitert.PersNr WHERE (((Haupt.PersNr)=[qryPersNr])); Code zum Mail generieren: Private Sub EmailGen_Click() Dim strVornamen As String Dim strNachname As String MsgBox ("Mail generieren Start") 'Vornamen auf einen Buchstaben kürzen strVorname = Left(Forms!fmHaupt!Vorname, 1) MsgBox ("Vorname wurde generiert") Nachname8 = Replace(Forms!fmHaupt!Nachname, " ", "") Nachname7 = Replace(Nachname8, "-", "") Nachname6 = Replace(Nachname7, "ß", "ss") Nachname5 = Replace(Nachname6, "Ä", "Ae") Nachname4 = Replace(Nachname5, "ä", "ae") Nachname3 = Replace(Nachname4, "Ö", "Oe") Nachname2 = Replace(Nachname3, "ö", "oe") Nachname1 = Replace(Nachname2, "Ü", "Ue") strNachname = Replace(Nachname1, "ü", "ue") MsgBox ("Nachname wurde generiert") Me.EMail = LCase(strVorname) & "." & LCase(strNachname) & "@klinikum-emden.de" MsgBox ("Daten übergeben") End Sub Ich hoffe, dass mir da jemand weiterhelfen kann. In der anderen Datenbank lief es und ich habe mir da alle Daten rausgeholt. Der Fehler, warum ich alles noch mal machen darf, liegt nicht in dem Programm selbst. Es ist lediglich eine Einstellung gemacht worden, die den Usern das Recht nimmt, sich z.B. die Spezialtasten zu aktivieren. Hier wird die Änderung zurück gesetz. Da wie aber nicht wissen, wie dies gemacht wird und es in die Datenbank rein soll, sollte ich nun eine Datenbank anpassen, die diese Einstellung drin hat. LG Nyx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 17. November 2010 Teilen Geschrieben 17. November 2010 Versuche mal bitte dein Problem in eine konkrete Frage zu fassen, ob es das Erzeugen der User betrifft, das Mail-Erzeugen oder das Mail bearbeiten? Warum deklariert du im Mail-Generieren einige Variablen, andere wiederum nicht? (Option Explicit ist schon eine ganz sinnvolle Sache.) Warum benutzt du 8 Hilfsvariablen, statt auf einer alle Ersetzungen zu machen? Falls du jeweils alle Umlaute ersetzen willst, bist du sicher dass replace() dieses nicht nur einmal tut? Gruß Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nyx_Autumn Geschrieben 18. November 2010 Autor Teilen Geschrieben 18. November 2010 Hi, erstmal vorweg. Problem wurde gelöst. Wie auch immer ich es hinbekommen habe. Was mich nun aber irritiert, sind die Fragen. Warum deklariert du im Mail-Generieren einige Variablen, andere wiederum nicht? Warum benutzt du 8 Hilfsvariablen, statt auf einer alle Ersetzungen zu machen? Falls du jeweils alle Umlaute ersetzen willst, bist du sicher dass replace() dieses nicht nur einmal tut? Gute Frage, warum hat es mein Vorgänger gemacht? Ich hab dies nur abgeschaut und übernommen. Da dies lief und auch in meinen Test klappte, hab ich daran nicht geändert. Ich kenn mich nicht gut in VBA aus und lerne grade erst dazu. Daher schau ich mir Momentan noch einige bei meinen Vorgänger ab, den ich nur leider nicht fragen kann, da ich nur die Datenbanken habe. Da ich mein Problem gelöst habe, kann man es nun als erledigt ansehen. Ich bin aber gerne bereit mich eines Besseren beleren zu lassen, sofern man die Muse dazu hat. Vielen Dank auf jeden Fall. Nyx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.