Storno Automatisieren. Anfügeabfrage VBA SQL Variable Access
Hallo Ihr codmasters
ich habe ein problem, an dem ich mir die zähne ausbeisse.
Ausgangslage:
Access 2003 mit einer Tabelle 2007(Tabelle mit allen Rechnungen)
Ziel: ich möchte eine suche auf das Feld RechnNr machen, die Nummer in der Variabel RechnungsnummerAlt speichern, den Record in der tabelle so anfügen, dass die RechnNr in die Spalte RechnungsnrAlt geschrieben wird. die Spalte RechnNr darf nicht beschrieben werden da AutoWert.
Bis dahin könnte ich das auch mit einer normalen anfügeabfrage erledingen.
Jetzt wirds schwiriger. Ich möchte nun die neue RechnNr zurück in den anderen record schreiben (ins feld NeuRechnNr) Zudem möchti ich noch ein eingabefenster öffnen und den Grund für den Storno abfragen und einen Ja/Nein wert auf wahr setzen.
Ich versuch das nun schon seit 2 Tagen und komm micht weiter. Hoffe auf eure Hilfen. Danke
Antwort schreiben
Antwort 1 von zurigo_x vom 15.03.2019, 09:55 Options
Hat sich erledigt und so han ich es gelöst:
Dim DB As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim x As Variant 'Alte Rechnungsnummer
Dim y As Variant 'Neue Rechnungsnummer
Dim z As String 'Bemerkung
Dim b As Variant
Dim a As Variant 'inhalt von Arbeitsdatum
Dim inhalt As String 'Bemerkung für alte Rechnung
Dim inhalt2 As String 'Bemerkung für neue Rechnung
Dim inhalt3 As String 'Bemerkung ohne neue Rechnung
Dim StornoOderNicht As Variant 'Verzweigung mit oder ohne neue Rechnung
b = (Environ("USERNAME"))
StornoOderNicht = MsgBox("Neu Rechnung erstellen", 36)
inputz:
z = InputBox("Stornierungs grund")
If z > LEER Then GoTo endinputz Else GoTo inputz
endinputz:
If StornoOderNicht = 7 Then GoTo keineRechnung
'************************************************************************************************************
'Kopie der stornierten Rechnung
'************************************************************************************************************
'************************************************************************************************************
'Rechnungsnummer Lösen
'************************************************************************************************************
a = Me!ArbeitMonat 'Ausführungs Datum auslesen
If a Like "*2007*" Then GoTo Rechnungsnummer2007
If a Like "*2006*" Then GoTo Rechnungsnummer2006
a = InputBox("Zur welchem Jahr gehört die Rechnung? Bitte vierstellig eigeben")
If a Like "*2007*" Then GoTo Rechnungsnummer2007
If a Like "*2006*" Then GoTo Rechnungsnummer2006
MsgBox ("fehler")
GoTo endesub
Rechnungsnummer2007:
RechnungsnummerSuchen2007 'Funktion Aufrufen
y = RgtNr
GoTo RechnungsnummerSpeichern
Rechnungsnummer2006:
RechnungsnummerSuchen2006 'Funktion Aufrufen
y = RgtNr
RechnungsnummerSpeichern:
x = Me!RechnNr 'Varialle x mit dem werdt aus RechnNr des aktuellen Datensatzes füllen
Storno.SetFocus 'Feld Storno des aktuellen Datensatzes auswählen
Storno.Value = True 'Wert des Feldes Storno auf wahr setzten
Set DB = CurrentDb
Set qdf = DB.QueryDefs("SornoKopieren") 'Angeben welche Abfrage genommen werden soll
qdf.Parameters!x = x 'Den Wert aus x im Ausdruck [X]als parameter eintragen
qdf.Parameters!y = y
qdf.Execute 'Abfrage Ausführen
'*************************************************************************************************************
'Neu Rechnungsnummer suchen und auslesen
'*************************************************************************************************************
Set DB = CurrentDb ' Datenbank definieren
'***********************************************************
'die folgenden zeilen erstellen den SQL Sting
strSQL0 = "SELECT [2007].RechnNr, [2007].AlteNummer " & _
"From 2007 "
strSQL2 = "WHERE ((([2007].AlteNummer)= "
strSQL3 = x
strSQL4 = " )) "
strSQL = strSQL0 & strSQL1 & strSQL2 & strSQL3 & strSQL4
Debug.Print strSQL
'Ender der String erstellung
'***********************************************************
Set rs = DB.OpenRecordset(strSQL) ' Recordset öffnen
If Not rs.EOF Then rs.MoveFirst ' Zum ersten Datensatz
y = rs!RechnNr ' Wert auslesen
rs.Close 'recordset schlissen
Set rs = Nothing 'Variabel rs leeren
Set DB = Nothing 'Variabel db leeren
'*************************************************************************************************************
'Bemerkung setzen
'*************************************************************************************************************
inhalt = "Stornirt durch " & b & ". Neue Nummer " & y & " Grund: " & z
inhalt2 = "Ersetzt Rechnung " & x & " Stornirt durch " & b & " Grund: " & z
inhalt3 = "Stornirt durch " & b & ". Keine neue Rechnung notwendig Grund: " & z
Debug.Print inhalt3
Set DB = CurrentDb ' Datenbank definieren
'***********************************************************
'die folgenden zeilen erstellen den SQL Sting
strSQL0 = "SELECT [Bemerkung].BemerkungRechnNr, [Bemerkung].BemerkungText , [Bemerkung].BemerkungUser " & _
"From Bemerkung "
strSQL2 = "WHERE ((([2007].SorbaNr)like * )) "
strSQL = strSQL0
'Ender der String erstellung
'***********************************************************
Set rs = DB.OpenRecordset(strSQL) ' Recordset öffnen
If Not rs.EOF Then rs.MoveFirst ' Zum ersten Datensatz
'Debug.Print rs
rs.AddNew
rs![BemerkungText] = inhalt
rs![BemerkungRechnNr] = x
rs![BemerkungUser] = b
rs.Update
rs.AddNew
rs![BemerkungText] = inhalt2
rs![BemerkungRechnNr] = y
rs![BemerkungUser] = b
rs.Update
rs.Close 'recordset schlissen
Set rs = Nothing 'Variabel rs leeren
Set DB = Nothing 'Variabel db leeren
Exit Sub
'********************************************************************************************************
'Kein neue Rechnung erstellen
'********************************************************************************************************
keineRechnung:
inhalt3 = "Stornirt durch " & b & ". Keine neue Rechnung notwendig Grund: " & z
x = Me!RechnNr 'Varialle x mit dem werdt aus RechnNr des aktuellen Datensatzes füllen
Storno.SetFocus 'Feld Storno des aktuellen Datensatzes auswählen
Storno.Value = True 'Wert des Feldes Storno auf wahr setzten
Set DB = CurrentDb ' Datenbank definieren
'***********************************************************
'die folgenden zeilen erstellen den SQL Sting
strSQL0 = "SELECT [Bemerkung].BemerkungRechnNr, [Bemerkung].BemerkungText , [Bemerkung].BemerkungUser " & _
"From Bemerkung "
strSQL = strSQL0
'Ender der String erstellung
'***********************************************************
Debug.Print inhalt3
Set rs = DB.OpenRecordset(strSQL) ' Recordset öffnen
'Debug.Print rs
rs.AddNew
rs![BemerkungText] = inhalt3
rs![BemerkungRechnNr] = x
rs![BemerkungUser] = b
rs.Update
rs.Close 'recordset schlissen
Set rs = Nothing 'Variabel rs leeren
Set DB = Nothing 'Variabel db leeren
Ausgang:
endesub: