Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Kunde berichtigen

Begonnen von gsaccess, Januar 27, 2023, 02:10:24

⏪ vorheriges - nächstes ⏩

gsaccess

Ich habe das Problem:

Beim Erstellen der Rechnung wird die Rechnungsnummer in die Auftragstabelle t_auftraege geschrieben.
Zuordnung über die auftrag_nr_h
strsql = "UPDATE t_Auftraege SET RechnungsNr_h=" & Me.OpenArgs & " WHERE auftrag_nr_h=" & Auftrag_Nr_h
Das funktioniert problemlos.

Immer wieder müssen aber Rechnungen nachträglich berichtigt bzw einem anderen Kunden zugeordnet werden.
Dazu habe ich ein Formular in dem alle Rechnungsberichtigungen durchgeführt werden.

Über das Kombinationsfeld "cboReAuswahl" wird die Rechnung gesucht.(aus der Rechnungstabelle "auftrag"
Über ein weiteres Kombinationsfeld "cboKunden_Nr" wird der neue Kunde gesucht.(aus den Kundenstammdaten)
jetzt soll die neue Kundennummer - steht im Textfeld txtKundenNrNeu in die Tabelle t_auftraege in das Feld Kundennr_h geschrieben werden.
'strsql = "UPDATE TabelleAufträge SET Kundennummer in der Tabelle Aufträge =" & Neue Kundennummer & " WHERE Rechnungsnummer in der Tabelle Aufträge=" & Rechnungsnummer im Formular
strsql = "UPDATE t_Auftraege SET KundenNr_h =" & txtKundenNrNeu & " WHERE rechnungsNr_h=" & Me.auftrag_nr

funktioniert aber nicht.
Was mache ich da falsch? Hat jemand eine Lösung?

PhilS

#1
Zitat von: gsaccess am Januar 27, 2023, 02:10:24strsql = "UPDATE t_Auftraege SET KundenNr_h =" & txtKundenNrNeu & " WHERE rechnungsNr_h=" & Me.auftrag_nr

funktioniert aber nicht.
1.) Bitte merken: "funktioniert aber nicht." ist keine ausreichende Problembeschreibung!
Was genau passiert (nicht)? Wird der Datensatz nicht aktualisiert? Kommt eine Fehlermeldung? Wenn ja, welche genau? Explodiert dein Computer?

2.) Es wäre gut den vollständigen Code-Ausschnitt für die Aktualisierung zu sehen, d.h. mindestens inkl. der Ausführung des o.a. SQL-Statements.

Auf den ersten Blick sieht die Where-Bedingung mit "rechnungsNr = Auftrag_nr" unlogisch aus.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

gsaccess

Danke für die Hilfe. Problembeschreibung werde ich in Zukunft verbessern. Siehe unten
Ich habe das Problem jetzt mit folgendem code gelöst

Dim rst As DAO.Recordset
Dim db As DAO.Database

Set db = CurrentDb()
Set rst = db.OpenRecordset("t_auftraege")
Set rst = db.OpenRecordset("SELECT [kundennr_h] From t_auftraege WHERE [rechnungsNr_h]=" & Me!auftrag_nr)

With rst
  .Edit
  !KundenNr_h = Me.txtKundenNrNeu
 
  .Update
  .Close
End With

funktioniert problemlos.

noch eine Frage:
Wie kann ich in diesem Datensatz noch ein zweites Feld (Firmenname_h) ändern?
!Firmenname_h=me.txtKundeNeu
bringt die Fehlermeldung: Laufzeitfehler 3265 Element in der Auflistung nicht gefunden



PhilS

Zitat von: gsaccess am Januar 27, 2023, 10:15:32Set rst = db.OpenRecordset("SELECT [kundennr_h] From t_auftraege WHERE [rechnungsNr_h]=" & Me!auftrag_nr)
 
[...]
Wie kann ich in diesem Datensatz noch ein zweites Feld (Firmenname_h) ändern?
!Firmenname_h=me.txtKundeNeu
bringt die Fehlermeldung: Laufzeitfehler 3265 Element in der Auflistung nicht gefunden
Die Liste der selektierten Spalten in deinem SQL Statement, im Moment nur kundennr_h, definierte die verfügbaren Felder (Fields) in dem erstellten Recordset.
Wenn du Firmenname_h in dem SQL-Statement ergänzt, kannst du dem Feld anschließend auch einen Wert zuweisen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

#4
Hallo,
ich halte das ganze Vorhaben in der Form für ersatzlos überflüssig. Wenn Du den Empfehlungen (in Deinen anderen Themen) zur Umstrukturierung gefolgt bist, so ist das doch ganz einfach.
Arbeite mit gebundenen Formularen und darin Kombinationsfelder zur Bestimmung der Fremdschlüsselfelder. Dann kannst Du per Kombi beliebige (Kunden)Zuordnungen machen und ändern. Landet alles sofort in der Tabelle. Alles ohne einen einzigen Buchstaben VBA bzw. SQL.
ZitatWie kann ich in diesem Datensatz noch ein zweites Feld (Firmenname_h) ändern?
Das ist nicht nur überflüssig, sondern falsch, denn es genügt die ID des Kunden, weitere Kundenfelder wären redundat und somit falsch.

Zeige mal ein vollständiges aktuelle Beziehungsbild.

PS:
Geht es hier um echte Rechnungen die auch vor dem Finanzamt bestehen müssen?
Gruß Klaus

Beaker s.a.

Set rst = db.OpenRecordset("SELECT [kundennr_h] From t_auftraege WHERE [rechnungsNr_h]=" & Me!auftrag_nr)Funktioniert aber nur wenn Rechnungs- und Auftrags-Nr. identisch sind,
ansonsten nur wenn die Rechnungs-Nr. zufällig der Auftrags-Nr. entspricht.
Besser wohl
strsql = "UPDATE t_Auftraege SET KundenNr_h =" & Me.txtKundenNrNeu & " WHERE auftragsNr_h=" & Me.auftrag_nrDiese Unlogik wurde aber auch schon angemerkt.
aus aktuellen Anlässen:
Das Hauptproblem - eines der Hauptprobleme, denn es gibt mehrere - eines der vielen Hauptprobleme beim Regieren von Leuten ist, von wem man sich das gefallen läßt; oder vielmehr, wer es schafft, die Leute soweit zu kriegen, dass sie sich's gefallen lassen.
Zusammenfassend: Es ist eine allseits bekannte Tatsache, dass die Leute, die sich am meisten wünschen, Leute zu regieren, gerade deshalb diejenigen sind, die am wenigsten dazu geeignet sind. Um die Zusammenfassung zusammenzufassen: Jeder, der imstande ist, sich zum Präsidenten wählen zu lassen, sollte um alles in der Welt daran gehindert werden, dass er seinen Job ausübt. Um die zusammengefasste Zusammenfassung zusammenzufassen: Leute sind ein Problem.
(Douglas Adams)

gsaccess

vielen Dank für eure Unterstützung.
zu Klaus:
Ich werde versuchen dies nach deinem Vorschlag umzusetzen.
Es geht um echte Rechnungen die auch vor dem Finanzamt bestehen müssen. Die berichtigten Rechnungen werden als solche gekennzeichnet bzw. muss der Kunde die alte Rechnung zurückschicken wenn diese an eine andere Adresse gesendet werden muss. War selber mal beim Finanzamt.
Das Beziehungsbild lade ich hoch.
zu Access Guru:
Das ist ein Teil den ich überarbeiten muss. Derzeit ist die auftrag_nr die Rechnungsnummer in der Rechnungstabelle.