online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon zurigo_x vom 23.01.2019, 17:14 Options

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:

Ähnliche Themen

Exel Tabelle nach Access exportieren mit VBA/Makro
sandrak  16.06.2007 - 175 Hits - 4 Antworten

SQL Variablen zuweisung
ichhabeinefrage  03.08.2007 - 256 Hits - 6 Antworten

Wie schreib ts man mit Access VBA in eine Tabelle hinein
AD2919  11.03.2008 - 182 Hits - 1 Antwort

Anfügeabfrage in MS Access
amaier161  20.05.2008 - 89 Hits - 2 Antworten

VBA-Excel
mentosbasi  28.05.2008 - 349 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026