Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Per VBA Code in eine in beziehungstehende Tabelle Werte einfügen

Begonnen von Robby3004, Mai 25, 2017, 14:16:49

⏪ vorheriges - nächstes ⏩

Robby3004

Hallo liebe Community,

nach edm ich jetzt schon seit 2 Tage immer wieder über neue Fehlermeldung stolpere, hoffe ich hier kann mir einer helfen. Ich habe 2 Tabellen (Mitarbeiter, Gespräche). Zudem habe ich ein Formular. In diesem Formular ist ein Kombifeld, welches es mir ermöglicht aus der Tabelle "Mitarbeiter" den betreffenden zu finden. Wenn ich den MA ausgewählt habe, werden Personalnummer, Vorname und Nachname und 3 Textboxen innerhalb des Formulars übergeben. Das funktioniert auch. Darunter liegen dann noch 2 Textboxen /txtthema, txtInhalt). Diese werden jetzt manuell befüllt. Zum Schluss gibt es einen Button, der nach Klick die gesamten Daten in die Tabelle Gespräche übertragen soll. Die Tabelle MA steht mit der Tabelle Gespräche in 1:n Beziehung, genauer gesagt die PersNummern. Hintergrund ist, dass ich zukünftig MA Gespräche protokollieren will. Zudem habe ich später auch die Möglichkeit zu schauen ob es schon einmal ähnliche Themen gab. Also jeder MA kann mehrere Gespräche haben und diese sollen protokolliert werden.

Zu meinem Problem: Ich habe es jetzt schon mit dem Makro Neuen Datensatz anfügen probiert. Dann mit einer SQL Anweisung Insert Into und zu guter letzt mit einem RecordSet. Alles war ohne Erfolg und ich komme nicht weiter. Ich bleibe auf jedenfall bei der Fehlermeldung "Datentyp-Konvertierungsproblem" hängen.

Ich habe die Beispieldatei einmal angehangen. Vielen Dank

MzKlMu

Hallo,
vorab, die Beispieldb kann ich mir nicht ansehen, ich habe nur Access2003 und benötige eine MDB.
Kannst Du mal einfach ein Bild des Beziehungsfensters zeigen ?
ZitatIch habe es jetzt schon mit dem Makro Neuen Datensatz anfügen probiert. Dann mit einer SQL Anweisung Insert Into und zu guter letzt mit einem RecordSet.
Du brauchst gar nix von den 3 Sachen. Mit gebundenen Formularen geht das alles automatisch. Außerdem wird in die Gesprächstabelle nur der Primärschlüssel des Mitarbeiters als Fremdschlüssel gespeichert. Personalnummer, Nachname und Vorname kommen nicht in die Gesprächstabelle. Ist die Personalnummer auch Primärschlüssel ? Wenn Personalnummer der PK ist, welcher Datentyp ist das ?

Mit einem Hauptformular (Mitarbeiter) und einem über die Schlüsselfelder verknüpften Unterformular (Gespräche) kannst Du jetzt im Ufo die Gespräche direkt erfassen.
Das Fremdschlüsselfeld wird automatisch gefüllt.
Da muss nichts programmiert werden, nur einige Zeilen im Hafo zur Suche des MA's.


Gruß Klaus

Lachtaube

Grüße von der (⌒▽⌒)


MzKlMu

Hallo,
und anbei noch die Version mit einem Unterformular.
Gruß Klaus

Robby3004

#5
Hallo Klaus,

vielen Dank zunächst für deine Mühe. Im Grunde ist die Version mit dem Unterformular genau das was ich brauch. Wäre es denn auch möglich in einem Formular nach dem MA zu suchen und dann per Button das Formular Gespräch erfassen zu öffnen. Dann das Gespräch erfassen und durch klick auf einen Button speichern wird gespeichert und die Form wieder geschlossen?

Und noch eine Frage zum Kombi-Feld. Brauche ich die zwei Kombifelder zum Suchen des MA?


DF6GL

Hallo,

versteh ich nicht... Du kannst doch im Form nach der Person suchen (oben stehendes Kombi).


Welche zwei Kombis meinst Du?   Es gibt nur eins bei der Version von Klaus.

Extra speichern brauchst Du nicht. Das geschieht, wenn das Form geschlossen wird.  Das Schließen selber kannst Du über einen Button realisieren.

Robby3004

Hallo DF6GL,

ja zu den Kombis. Ich war da noch in der ersten Version. Allerdings bei der mit dem Unterformular habe ich das Problem wenn ich einen MA auswähle der noch keinen Eintrag hat geht der Button "Gespräch erfassen" nicht. Wenn ein MA einen Eintrag hat wird der alte angezeigt. Kann man eine Art zurücksetzen einbauen? Also eine Funktion die nach Klick dann die Felder leert und vor allem nicht den alten Eintrag anzeigt. Später werde ich noch eine Abfrage einbauen die es dann möglich macht ein Bericht zu erstellen. Soweit war ich in einer anderen ähnlichen Anwendung schon, doch dann habe ich gemerkt, wenn ich ein MA gerade erfasst habe, dann auf den einbauten Button drucken gehe fragt er die vorgegebenen Parameter ab. Aber beim nächsten MA schon nicht mehr und er druckt das Gespräch vom MA davor nochmal. In dem Fall muss doch die Abfrage aktualisiert werden, oder?

MzKlMu

Hallo,
Zitatwenn ich einen MA auswähle der noch keinen Eintrag hat geht der Button "Gespräch erfassen" nicht.
Da kann man einfach per VBA das Datum eintragen.
ZitatAlso eine Funktion die nach Klick dann die Felder leert und vor allem nicht den alten Eintrag anzeigt.
Bei einem gebundenen Formular muss man keine Felder leeren, ein neuer Datensatz ist automatisch leer.
Warum willst Du nicht den alten Eintrag anzeigen. Es kann doch vorteilhaft sein, im Formular mal nachsehen zu können was schon mal war. Da baut man sich noch Buttons ein zum vor und zurück blättern.

Leicht geänderte DB anbei, ich habe das mit dem automatischen Datumseintrag mal eingebaut.

Du solltest Dich dringend mal mit den Grundlagen zu Access beschäftigen. Vor allen Dingen scheint Dir die Funktionsweise gebundener Formulare unbekannt bzw. unklar zu sein.

Das mit dem Drucken kommt später, eins nach dem anderen.
Was soll denn der Bericht anzeigen ?
Gruß Klaus

Robby3004

Hallo MzKlMu,

vielen Dank für deine Unterstützung. So wie es jetzt ist ist es schon mal super. Und ja ich muss mich tiefer in Access einarbeiten. Aber da bin ich dran. Zwei Abfragen habe ich mir auch gerade erstellt aus der ich dann mein Bericht erstelle. Der Bericht wird von mir so gestaltet, dass es nachher ein Papierformular (Gesprächsprotokoll) entspricht. Hier war nur mein Problem, wenn ich einen MA gerade erfasst habe und dann auf drucken ging, war alles gut. Dann habe ich Access nicht beendet und wieder neu gestartet, sondern direkt das nächste Gespräch erfasst und bin wieder auf drucken gegangen. Jetzt allerdings hat er den vorherigen Datensatz genommen und gedruckt.