MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 10.07.2018, 09:09   #1
Irishman
Neuer Benutzer
Neuer Benutzer
Standard Acc2016 - daten mittels VBA in Tabelle speichern

Guten Morgen werte Damen und Herren.
Ich bin Access und VBA Anfänger und hänge seit ca. zwei Wochen an einem Problem was ich nicht lösen kann.

Das Problem:
Ich baue grade für mein Büro eine Datenbank mit Erfassungsormular, was dazu dienen soll Post Sendungen zu dokumentieren. Ich habe 7 Tabellen und ein Formular. Mittels des Formulars sollen die Kollegen eintragen können wann und welche Post Sie versenden. In diesem Formular gibt es drei Textfelder und drei Kombinationsfelder wo folgendes ausgewählt werden kann.:

com user = Wer hat Post versendet
txt date = an welchem Datum wurde es Versand
com typ = Welche Brief Art wurde Versand
txt count = wie viele Briefe wurden Versand
k inn = für welche Innung wird die Post Versand
txt knr = Kostenstellen Nummer (dieses Textfeld wird automatisch gefüllt nach Auswahl der Innung)

Diese daten sollen jetzt mit einem Klick auf eine Schaltfläche in die Tabelle t_main gespeichert werden. Allerdings ist das Textfeld (txt knr) nicht gebunden. Ich habe hin und her probiert und in diesem und anderen Foren gesucht biss ich mir nach und nach einen VBA Code zusammengestückelt habe. Dieser funktioniert auch trägt allerdings nicht die richtigen daten in die Tabelle ein.
Code:

Private Sub b_01_Click()

Dim strSQL As String

strSQL = "INSERT INTO t_main (user, datum, typ, count, inn, kost_nr) " _
          & "SELECT" & (Me.Controls("com user").Value) & ", " _
                & "'" & (Me.Controls("txt date").Value) & ", " _
                & "'" & (Me.Controls("com typ").Value) & ", " _
                & "'" & (Me.Controls("txt count").Value) & ", " _
                & "'" & (Me.Controls("k inn").Value) & ", " _
                & "'" & (Me.Controls("txt knr").Value) & ", ;"
CurrentDb.Execute SQL, dbFailOnError

End Sub
Dieser Cod Speichert bei den Kombinationsfeldern die ausgewählte Stelle des Kombi Feldes ein. (Außer bei der dem Kombifeld (k inn) da speichert er mir den ausgewählten Text)
Beispiel:
Im Kombifeld kann ich auswählen: Name1, Name2, Name3 und Name4.
Ich wähle den dritten Namen und klicke auf Speichern.
Ergebnis: In die Tabelle speichert er mir "3"

Und das letzte Textfeld (txt knr) speichert er mir gar nicht.

Ich würde mich über eine Antwort sehr freuen und bedanke mich im Voraus.
Irishman ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 09:32   #2
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
warum bindest Du das Formular nicht einfach an die Tabelle/Abfrage. Dann braucht es keinen Code, keinen Buchstaben. Da braucht es noch nicht mal einen Button zum Speichern.
Abgesehen davon, ist es ja richtig dass bei einem Kombifeld die Zahl gespeichert wird und nicht der Klartext.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 09:36   #3
Maxel
MOF Guru
MOF Guru
Standard

Abgesehen davon, was Klaus sagte:

Zeige uns doch bitte einen Screenshot des Beziehungsfensters.

__________________

Viele Grüße von Maxel

Nie aufhören anzufangen,
nie anfangen aufzuhören!
Maxel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:23   #4
Irishman
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@gpswanderer: alle Felder des Formulars Außer das letzte (txt knr) sind an die Tabelle (t_main) gebunden. ABER! Ich möchte das sich das Textfeld (txt knr) automatisch mit der entsprechenden Kostenstellennummer füllt, wenn man im Kombi Feld (k inn) eine Innung auswählt. Ich habe es vorher anders gemacht und alle Felder ohne VBA angelegt (heißt gebundene Felder und dann Schaltfläche Speichern) Und nur das Textfeld (txt knr) per VBA speichern lassen, da dieses ungebunden wahr. (dieses Feld ist ungebunden, weil es über den Befehl
Code:

=[k inn].Column(2)
sich die Daten holt. Aber das Speicher des Feldes per VBA hat auch nicht funktioniert da er mir dann die Daten aus den gebundenen Feldern in einem Datensatz gespeichert hat und die Daten aus den Textfeld (txt knr) in einem separaten Datensatz gespeichert hat.) Also bin ich dazu über gegangen alle daten per VBA zu speichern damit Sie in einem Daten Satz gespeichert werden, was mich zum oben genanntem Problem führt.

@Maxel:

Geändert von Irishman (10.07.2018 um 10:49 Uhr).
Irishman ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:27   #5
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
wenn das Formular gebunden ist, ist der Code ohnehin überflüssig, denn Du speicherst dann ja 2 Datensätze, 1x über gebunden und 1x über den VBA Code.
Auch wenn man Column benötigt ist oftmals etwas nicht so optimal.

Zeige mal ein Bild des Beziehungsfensters, damit man die Zusammenhänge erkennt.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:33   #6
Irishman
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@gpswanderer: Ich habe doch ein pic von den Beziehungen in meinem letzten post mit hochgeladen. Oder meinst du was anderes?
Irishman ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:35   #7
markusxy
MOF Meister
MOF Meister
Standard

Du solltest übrigens bei den Feldnamen keine reservierten Wörter wie "Count" verwenden.

Siehe: https://msdn.microsoft.com/DE-DE/lib.../ff845663.aspx

Außerdem ist der Insert SQL so was von falsch - viel schlimmer gehts nicht.
Vielleicht doch mal die Grundlagen ansehen.

Siehe: https://www.sql-und-xml.de/sql-tutorial/
markusxy ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:38   #8
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
ich meine ein Bild (Screenshot) des Beziehungsfensters.
Hatte auch Maxel in #3 schon drum gebeten.

Hast Du überhaupt Beziehungen angelegt ?

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:43   #9
Irishman
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@markusxy: danke für die Links die werde ich mir mal anschauen.

@gpswanderer: Ich habe doch in meinem zweiten Post ein Bild vom Bezihungsfenster verlinkt.
Irishman ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:48   #10
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
ich sehe kein Bild.
Hast Du das Bild hier im Forum angehängt ?

Zitat:

Also bin ich dazu über gegangen alle daten per VBA zu speichern damit Sie in einem Daten Satz gespeichert werden, was mich zum oben genanntem Problem führt.

Wenn Du per VBA speicherts, muss das Forumlar ungebunden sein. Ist das Formular gebunden, darf zum Speichern kein Insert per VBA angewendet werden. Das schließt sich zwingend gegenseiti aus. Mit ungebunden Formularen hast aber aber noch viel mehr Probleme und Aufwand.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 10:57   #11
Irishman
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

habe das bild jetzt neu hochgeladen und eingebunden.

Hast du denn einen Vorschlag wie Ich das dann anders machen kann das sich das Textfeld (txt knr) automatisch füllt und die Daten aus dem Textfeld in die Tabelle (t_main) gespeichert werden?
Irishman ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 11:05   #12
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
die Beziehungen sind völlig ungeeigenet. Bezeihungen laufen grundsätzlich über den Primärschlüssel.
Was soll das für eine merkwürdige Beziehung sein zwischen den beiden Primärschlüsseln PreisID und BriefID, das kann doch so unmöglich stimmen.
Das es die kst_nr bei der Innung bereits gibt, ist diese in der Tabelle "t_main" ersatzlos überflüssig. In die Tabelle kommt bnur die InnungenID als Fremdschlüssel. Auch das Feld "inn" muss dort raus.

Du solltes erst mal das Datenmodell in Ordung bringen, bevor Du mit Formularen weiter machst. So wird das nix.

Anbei mal noch ein Bild wie es aussehen sollte.
Das gilt sinngemäß auch für die anderen Beziehungen. Der Zusammenhang zwischen PreisID und BriefID ist mir unbegreiflich.
In den Beziehungen ist auch grundsätzlich referentielle Integrität einzustellen.
Angehängte Grafiken
Dateityp: jpg 0103.jpg (48,8 KB, 7x aufgerufen)

__________________

Gruß
Klaus
Office2016, Win10

Geändert von gpswanderer (10.07.2018 um 11:12 Uhr).
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 11:18   #13
Irishman
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Vielen dank für die Arbeit die du dir machst. Diese posts sind sehr hilfreich für mich. Ich werde das sofort ändern!

Aber eine frage bleibt. Warum soll ich die kst_nr aus der t_main raus werfen? ich möchte doch die daten der passenden Kostenstelle im datensatz haben.
Irishman ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 11:27   #14
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,

Zitat:

ich möchte doch die daten der passenden Kostenstelle im datensatz haben.

nein, brauchst Du nicht. Die Kostenstelle steht doch in der verknüpften Innung. Über eine Abfarge hast Du automatisch auch die Kostensetlle. Die muss (bzw. darf) nicht noch mal in die Maintabelle.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.07.2018, 11:30   #15
Irishman
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

AH das ergibt sin! danke!
Irishman ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.