Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Einzelnen Datensatz in im Recordset ändern / If Anweisung Im With Block

Begonnen von Frank77, November 21, 2011, 22:19:54

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
nach deinen neuen Ausführungen würde ich es erst recht so machen, wie bereits vorgeschlagen:
Zitat von: MzKlMu am November 22, 2011, 14:52:21Ich würde sowohl den Paramter für die Mwst als auch den Parameter für Brutto oder Netto in der Tabelle speichern und nur in einer Abfrage rechnen.

Wenn dann das Formular an die Tabelle gebunden wird, brauchst Du keine Zeile VBA und das Formular ist immer aktuell, automatisch.
Gruß Klaus

Frank77

Hallo  !

Das mit den gebundenen Formularen habe ich ja bei anderen Tabellen standardmäßig so gemacht!
Was mich aber bei der Lösung aber stört ist das beim normalen schlissen oder weiterblättern im Formular immer der Datensatz gespeichert wird wenn der Benutzer keinen Undo Botton hat
ich wollte einfach bei der Lösung hier etwas mehr Performance und Dynamics ins Formular bringen  sonst wär es  ja einfach
Zu den berechneten Feldern möchte ich euch eure Meinung nicht absprechen sonst wäre ich ja nicht hier ich bin ja über jede Hilfe froh die ich bekomme!
Ich habe bei der Schulung zu Access 2010 von Lorenz Hölscher gesehen das man die zu berechneten Felder die nach standardmäßig benötigt gleich in der Tabelle  berechnen lässt damit man es jederzeit ohne großen Aufwand abfragen kann ( Geht im Beispiel , aber wenn die Tabelle in 2010 kopiert wird geht's aber darum geht's hier ja nicht )

Der Grund warum ich den Beitrag eröffnet habe war der das ich im Netz unter dem such Kriterium
Nichts Komplettes gefunden habe und möchte hier an dieser Stelle mal meine endgültige Lösung posten

Zur Beispiels DB:

Der neue Datensatz oder der eine Änderung wird immer verworfen wenn nicht gespeichert wird
Ein Fach mal gnadenlos durch testen
DB mit Shirt starten wenn in sie von innen anschauen wollt

Viel Spaß damit und Gruß an alle die etwas damit anfangen können besonders an MzKlMu und DF6GL

Frank


Option Compare Database
Option Explicit

Private newFlag As Boolean        ' ist True bei neuem Datensatz
-----------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
   Set db = CurrentDb()
   Set rst = db.OpenRecordset("TblArtikel", dbOpenDynaset)
   newFlag = False
End Sub

-----------------------------------------------------------------------------------------------------------

Private Sub CmdNeu_Click()
   If rst.Updatable And rst.EditMode = dbEditNone Then
   newFlag = True
   Me!TxtArtID.Value = ""                  ' maskenabhängig
   Me!TxtArtName.Value = ""
  ......
  ......
  ......
End If
   Me!CmdSpeichern.Visible = False
End Sub

-----------------------------------------------------------------------------------------------------------

Private Sub speichern()

   'On Error GoTo Fehler

   If rst.Updatable And rst.EditMode = dbEditNone Then
   If newFlag Then rst.AddNew Else rst.Edit
 
   If Me.TxtArtName.Value <> "" Then rst!ArtName = Me.TxtArtName
   If Me.CboArtLiefIDRef.Value <> "" Then rst!ArtLiefIDRef = Me.CboArtLiefIDRef
   If Me.TxtArtLifArtNr.Value <> "" Then rst!ArtLifArtNr = Me.TxtArtLifArtNr
   If Me.CboArtKatIDRef.Value <> "" Then rst!ArtKatIDRef = Me.CboArtKatIDRef
   If Me.CboArtUntKatIDRef.Value <> "" Then rst!ArtUntKatIDRef = Me.CboArtUntKatIDRef
   If Me.TxtArtVPEinheit.Value <> "" Then rst!ArtVPEinheit = Me.TxtArtVPEinheit
   If Me.CboArtEinheitenIDRef.Value <> "" Then rst!ArtEinheitenIDRef = Me.CboArtEinheitenIDRef
   If Me.TxtArtPreisstaffelung.Value <> "" Then rst!ArtPreisstaffelung = Me.TxtArtPreisstaffelung
   If Me.CboArtStaffelungPreisIDRef.Value <> "" Then rst!ArtStaffelungPreisIDRef = Me.CboArtStaffelungPreisIDRef

   If Rahmen1.Value = 1 Then                               ' Bruttowert in Netto umrechnen
   rst!ArtNetto = Me.Text2.Value / (1 + rst!ArtMwstIDRef)
Else
   rst!ArtNetto = Me.Text2.Value                           ' Netto direkt abspeichern
End If
    If Rahmen2.Value = 1 Then                              ' Mwst einstellung speichern
   rst!ArtMwstIDRef = mwstB
Else
   rst!ArtMwstIDRef = mwstA
End If
   rst.Update
   Me!IstArtikel.Requery
   If newFlag = True Then rst.MoveLast
   Call anzeigen
Else
   MsgBox "Kein Editieren möglich!"
End If
   newFlag = False
   Me!CboArtUntKatIDRef.RowSource = "SELECT TlbUntKategorie.UntKatID, TlbUntKategorie.UntKatName FROM TlbUntKategorie ORDER BY TlbUntKategorie.UntKatName;"
Exit Sub
   
Fehler:
   MsgBox Err.Number & " " & Err.Description
End Sub

-----------------------------------------------------------------------------------------------------------

Private Sub Rahmen1_Click()                         ' Brutto-/Netto Rahmen
   If newFlag = True Then Exit Sub
   If Rahmen1.Value = 1 Then
   Bezeichnungsfeld4.Caption = "Brutto"
Else
   Bezeichnungsfeld4.Caption = "Netto"
End If
   Call anzeigen
   Call Speichern_One
End Sub

-----------------------------------------------------------------------------------------------------------

Private Sub Rahmen2_Click()                              'Mwst Rahmen
If newFlag = True Then Exit Sub
Call speichern
Call Speichern_One
End Sub

-----------------------------------------------------------------------------------------------------------

Private Sub CmdLoeschen_Click()
If rst.Updatable And rst.EditMode = dbEditNone Then
 If MsgBox("Wollen Sie den Datensatz wirklich löschen ?", vbYesNo) = vbYes Then
  rst.Delete
  rst.MoveNext                                  ' zum nächsten Datensatz ...
  If rst.EOF And Not rst.BOF Then rst.MoveLast  ' nur wenn Tabelle nicht leer ist
  Me!IstArtikel.Requery
  Call anzeigen
 End If
Else
 MsgBox "Datensatz kann momentan nicht gelöscht werden!"
End If
End Sub

-----------------------------------------------------------------------------------------------------------


Private Sub Form_Unload(Cancel As Integer)
   Set rst = Nothing
End Sub


Produktbild in neuem Beispiel übers Recordset mit eingebaut

[Anhang gelöscht durch Administrator]
Selbstständig = Selbst und Ständig