Private Sub Update()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim sql As String
Set dbs = CurrentDb
sql = "SELECT * FROM qryTem ;"
Set rst = dbs.OpenRecordset(sql, dbOpenDynaset)
With rst
Do Until rst.EOF
sql = "UPDATE [tblBestellpositionen] SET [RechNr] = '" & Me!RechNr & "' WHERE [KlinikID] = " & Me!txtRechnungsdatumVon & " ;"
dbs.Execute (sql)
.MoveNext
Loop
End With
rst.Close
dbs.Close
End Sub Zitat von: Purzel862 am August 28, 2019, 21:05:48Diese konkrete Frage lässt sich anhand des gezeigten Codes nicht beantworten. Ich würde mal den erzeugten SQL String in der Variable sql anschauen (Debug.Print) und evtl. mal in die SQL-Ansicht einer Access-Abfrage kopieren und dort ausführen lassen.
Mit diesem Code aktualisiert er bloß eine Zeile obwohl mehrere Zeilen die gleichen Voraussetzungen erfüllen.
ZitatIst das wirklich so beabsichtigt?Code [Auswählen]...WHERE [KlinikID] = " & Me!txtRechnungsdatumVon & " ;"
..."' WHERE [KlinikID] = " & Me!txtRechnungsdatumVondbs.Closerst.Close
Set rst = Nothing
Set dbs = NothingPrivate Sub cmdRechnung_Click()
Dim strDateipfad As String
Dim strBericht As String
Dim strRechnung As String
Dim strFilter As String
Dim sqlcmd1 As String
Dim strSQL As String
Dim strSQL1 As String
Dim strUpdate As String
Dim strUpdate1 As String
If IsNull(Me!RechNr) Then
MsgBox "Fehlende Rechnungsnummer!!!", vbOKOnly, "Fehlende Daten"
Else
strBericht = "rptRechnung"
strDateipfad = Me.Pfad & "Rechnung_" & Me.RechNr & ".pdf"
If Not IsNull(Me!txtBestelldatumVon) Then
strFilter = strFilter & " AND Start >= " & ISODatum(Me!txtBestelldatumVon)
End If
If Not IsNull(Me!txtBestelldatumBis) Then
strFilter = strFilter & " AND Start <= " & ISODatum(Me!txtBestelldatumBis)
End If
If Not Me!txtRechnungsdatumVon = True Then
strFilter = strFilter & " AND bezeichnung LIKE '*" & Me!txtRechnungsdatumVon.Column(1) & "*'"
End If
If Len(strFilter) > 0 Then
strFilter = Mid(strFilter, 5)
Me!sfmRechnungfilter.Form.Filter = strFilter
Me!sfmRechnungfilter.Form.FilterOn = True
Else
Me!sfmRechnungfilter.Form.Filter = ""
Me!sfmRechnungfilter.Form.FilterOn = False
End IfDoCmd.OpenReport strBericht, View:=acViewPreview, WhereCondition:=strFilter
sqlcmd1 = "INSERT INTO tblBestellungen ([KlinikID], [RechNr], [Rechnung_am], [Rechnungsdatei], [Zahlungsziel], [Betrag]) VALUES ('" & [Reports]![rptRechnung]![KlinikID] & "', '" & Me.RechNr & "', Date(), '" & Me.Pfad & "Rechnung_" & Me.RechNr & ".pdf" & "', '" & Date + 14 & "', '" & [Reports]![rptRechnung]![Text88] & "');"
strUpdate = "UPDATE tblRechNr SET RechNr = '" & Me.RechNr & "';"
strSQL = "INSERT INTO tblBestellpositionen SELECT KlinikID, KundeID, vorgangid, vorname, Nachname, Personen, Kunde, Familie, TagundPersonen, Sommer, Winter, Beginn, Anzahl FROM qryTemp WHERE KlinikID = " & Me.txtRechnungsdatumVon & "; "
strUpdate1 = "UPDATE tblBestellpositionen SET Rechnung_AM = " & ISODatum(Now) & " WHERE KlinikID = " & Me.txtRechnungsdatumVon & ""
DoCmd.SetWarnings False
DoCmd.RunSQL sqlcmd1
DoCmd.RunSQL strSQL
DoCmd.RunSQL strUpdate
DoCmd.RunSQL strUpdate1
DoCmd.SetWarnings True
DoCmd.OutputTo acOutputReport, strBericht, acFormatPDF, strDateipfad
DoCmd.Close acReport, strBericht
End If
Call Update
End Sub sql = "UPDATE [tblBestellpositionen] SET [RechNr] = '" & Me!RechNr & "' WHERE [KlinikID] = " & Me!Me!txtRechnungsdatumVon & " ;"| BestellpositionID RechNr Rechnung_AM KlinikID VorgangID KundeID 1651 2019-200 29.08.2019 17:02:42 40 6617 5414 1652 29.08.2019 17:02:42 40 7019 5763 1653 29.08.2019 17:02:42 40 7020 5764 1654 29.08.2019 17:02:42 40 7021 5765 1655 29.08.2019 17:02:42 40 7240 5965 1656 2019-5 28.08.2019 21:11:40 25 2712 2458 1657 28.08.2019 21:11:40 25 6801 5577 1658 28.08.2019 21:11:40 25 7597 6244 1659 28.08.2019 21:11:40 25 7490 6147 1660 2019-18 28.08.2019 21:12:23 19 6817 5592 1661 28.08.2019 21:12:23 19 7380 6073 1662 28.08.2019 21:12:23 19 7511 6160 |
ZitatWHERE [KlinikID] = " & Me!Me!txtRechnungsdatumVon & " ;"Stimmt DS wirklich ?
Zitat von: MzKlMu am August 29, 2019, 17:32:29
Hallo,ZitatWHERE [KlinikID] = " & Me!Me!txtRechnungsdatumVon & " ;"Stimmt DS wirklich ?
Was steht denn in dem Feld "txtRechnungsdatumVon" ?
Da muss der gleiche Wert vorhanden sein wie in KlinikID.
Zitat von: Purzel862 am August 29, 2019, 17:23:45Technisch zwar nicht relevant, aber dennoch ist es mir unverständlich, warum du das Steuerelement txtRechnungsdatumVon nicht zu cboKlinik umbenennst.
... durch ein Kombinationsfeld = Me!txtRechnungsdatumVon in dem ist die KlinikID und der Name der Klinik, ...
Zitat von: Purzel862 am August 29, 2019, 17:23:45Das ist für mich mit den bisherigen Informationen nicht erklärbar. Ich empfehle erneut, das zusammengesetzte SQL-Statement zu überprüfen und ggfls. probeweise einzeln in einer Abfrage auszuführen.
Auch das macht er alles, das folgenden steht im Call Update drin nur das wird auf einen Datensatz ausgeführt obwohl es mehrere Klienten zu einer Klinik gibt deshalb ist die Klinik auch öfter als Zahl vertreten:
If Not Me!txtRechnungsdatumVon = True Then
strFilter = strFilter & " AND bezeichnung LIKE '*" & Me!txtRechnungsdatumVon.Column(1) & "*'"
End IfIf Nz(Me.cboKlinikID, 0) = 0 Then
'oder
If Me.cboKlinikID.ItemsSelected.Count = 0 Then... & "Bezeichnung = " & Me!cboKlinikID.Column(1)strUpdate1 = "UPDATE tblBestellpositionen SET Rechnung_AM = " & ISODatum(Now) & " WHERE KlinikID = " & Me.txtRechnungsdatumVon & ""
.
.
Call UpdateSub Update(sSQL As String)
CurrentDb.Execute sSQL
End SubCall Update strUpdate1ZitatIch empfehle erneut, das zusammengesetzte SQL-Statement zu überprüfen und ggfls. probeweise einzeln in einer Abfrage auszuführen.Sehr hilfreich dabei ist dieses kleine Tool:
Zitat von: Purzel862 am August 28, 2019, 21:05:48Code (vb) [Auswählen]
Do Until rst.EOF
sql = "UPDATE [tblBestellpositionen] SET [RechNr] = '" & Me!RechNr & "' WHERE [KlinikID] = " & Me!txtRechnungsdatumVon & " ;"
dbs.Execute (sql)
.MoveNext
Loop
sql = "UPDATE [tblBestellpositionen] SET [RechNr] = '" & Me!RechNr & "' WHERE [KlinikID] = " & rst!KlinikID & " ;"