Office: Summen

Helfe beim Thema Summen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; PS: schreibe normalerweise auf 07, habe hier aber nur 03 zur Verfügung. Macht nichts, denn... ich hätte eh nur ein 2000 zur Verfügung. ;-) So, ich... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von q065sb, 2. März 2010.

  1. miriki Erfahrener User

    Summen


    Macht nichts, denn... ich hätte eh nur ein 2000 zur Verfügung. ;-)

    Na siehste, geht doch...

    Ich sehe so auf Anhieb nichts, was über ein paar stilistische Sachen hinausgehen würde. Die Einrückung und ein paar Leerzeilen hab ich oben mal eingefügt, die DIM-Zeilen würde ich im oberen Teil zusammenhalten - ich mag kein DIM mitten im Source. Ich versuche auch i.a., das "exit sub" zu vermeiden. Meist geht es, wenn man die IF-Abfrage umdreht (aus "kleiner" z.B. "größer/gleich" macht) und das "end if" dann am Prozedur-Ende steht. So'n "exit sub" ist auch nur 'n verkapptes "goto", und das wiederum ist grundböse. ;-) Aber wie gesagt: Alles eher stilistisch und weniger auf Funktionalität bezogen.

    Ich nehme an, mit UF meinst Du die (abhängigen) Datensätze, die zur Rechnungs, also die Rechnungsposten, gehören?

    Das ist (jetzt) auch keine große Hexerei mehr. Nachdem du aus dem Angebot die Rechnung erstellt hast und die Kopfdaten bekannt sind, kannst Du nach gleichem Schema die Detail-Daten kopieren, nur daß dies eben in einer Schleife passiert und kein Einzelschuß ist.

    Die Rechnungsposten sollten ja n:1 mit den Rechnungen verknüpft sein, so wie es die Angebotsdetails ja auch mit den Angeboten sind. Du mußt jetzt also eigentlich nur zusätzlich darauf aufpassen, diese Referenz aufzubauen.

    Da Du den Rechnungskopf ja hast, kannst Du dort die ID des Datensatzes nach dem .update auslesen. Und diese ID nimmst Du als Referenz-Feld in die Rechnungsdetails. Den Rest kopierst Du so wie oben bzw. berechnest nach Bedarf Werte.

    Sieht gar nicht schlecht aus, finde ich. Das kriegst Du bestimmt hin.

    Gruß, Michael
     
  2. q065sb Erfahrener User
    Danke, ich hab mir auch echt das Hirn zermartert - war garnicht so leicht.
    Wo setz ich denn jetzt am dümmsten die Schleife hin. Angenommen die UF heißen hier Abf_UrsprungUF und Abf_ZielUF für die jeweiligen Formulare Abf_Ursprung und Abf_Ziel. Ich will in jedem Fall ausschließen, dass mir so ne blöde Fehlermeldung kommt vonwegen 'kein Datensatz gefunden' weil ich am Ende der Schleife angekommen bin. Ich setzt jetzt also rs3 und rs4 dazu (wo?) und begebe mich in eine Schleife (welche am besten?). Wie genau meinst du das mit Bookmark setzen - ich steh irgendwie auf der Leitung?

    Lg Stevie
     
  3. miriki Erfahrener User
    Hinter das "End Sub"... ;-)

    Ne, im Ernst... Schau Dir noch mal den Pseudo-Code in meinem Posting vom 09.03.2010 15:58 Uhr an.

    Die Schleife für die Rechnungs-Details muß direkt hinter dem Kopieren des Rechnungs-Kopfs laufen. Vorher bringt's nichts, weil Du die Referenz (Posten zu Rechnung) nicht setzen kannst und entsprechende Fehlermeldungen bekommst, wenn die referentielle Integrität aktiviert ist.

    Löse Dich bitte von dem Gedanken, mit Formularen zu arbeiten. Du arbeitest mehr oder weniger direkt auf den Tabellen. Der ganze Kladderadatsch würde auch laufen, wenn du kein Formular hast. Das Formular ist eigentlich nur da, weil Du sonst nicht wüßtest, wo Du einen Button hinsetzen solltest. ;-)

    Na, da sollte Dir die Online-Hilfe zu findfirst und Konsorten aber genügend Futter liefern, das zu verhindern. Letztendlich läuft es so:
    Code:
    Suche ersten Datensatz
    Solange aktiver Datensatz:
        Verarbeite Datensatz
        Suche nächsten Datensatz
    Die Abfrage, ob man sich noch innerhalb der Liste befindet (Datensatz aktiv), kann mit EOF, BOF, NULL und Artverwandten erfolgen. Ist kein Datensatz mehr aktiv, hat man das Ende der Liste erreicht (bzw. überschritten) und die Schleife muß beendet werden, weil's sonst Fehlermeldungen gibt.

    rs3 und 4 kannst Du eigentlich fast überall setzen. Ich bevorzuge, wenn möglich, die SET Zeilen ähnlich der DIM Zeilen am Anfang der Prozedur zusammen zu halten.

    Als Schleife würde sich wahrscheinlich eine WHILE Schleife anbieten.

    Und das mit dem Bookmark... Ist nicht zwingend notwendig und kommt ein bißchen darauf an, was in Deinem Formular passieren soll. Laß das vielleicht erstmal bei Seite und schau dir Die Online-Hilfe zu den Bookmarks bei Gelegenheit in Ruhe an.

    Gruß, Michael
     
  4. q065sb Erfahrener User

    Summen

    Ich hab den Recordset für den Auftragskopf nun implementiert, der funktioniert tadellos:

    On Error GoTo Err_RecordSet
    Me.Requery
    DoCmd.Save
    Dim db As Database
    Dim rs1 As Recordset
    Dim rs2 As Recordset
    If IsNull([Ang_Nr]) Then Exit Sub
    Set db = CurrentDb()
    Set rs1 = db.OpenRecordset("Abf_Angebotskopf", dbOpenDynaset)
    Set rs2 = db.OpenRecordset("Abf_Auftragskopf", dbOpenDynaset)
    rs1.FindFirst "[Ang_Nr] = " & [Ang_Nr]
    If Not rs1.NoMatch Then
    rs2.AddNew
    rs2![Kd_Nr] = rs1![Kd_Nr]
    rs2![Anrede] = rs1![Anrede]
    rs2![Name_feld] = rs1![Name]
    rs2![Rechnungsstraße] = rs1![Rechnungsstraße]
    rs2![RechnungsPLZ] = rs1![RechnungsPLZ]
    rs2![Rechnungsort] = rs1![Rechnungsort]
    rs2![Liefersstraße] = rs1![Liefersstraße]
    rs2![LieferPLZ] = rs1![LieferPLZ]
    rs2![Lieferort] = rs1![Lieferort]
    rs2.Update
    rs2.Close
    rs1.Close
    MsgBox ("In Aufträge kopiert!")
    Me.Sperren = True
    DoCmd.Close
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Auftrag"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    End If
    Exit_RecordSet:
    Set rs1 = Nothing
    Set rs2 = Nothing
    Set db = Nothing
    Exit Sub
    Err_RecordSet:
    MsgBox ("Ein Fehler ist aufgetreten!")
    Resume Exit_RecordSet

    Leider habe ich Probleme sobald ich das AngebotsUF (Abf_Angebotszeile) ansprechen will:

    On Error GoTo Err_RecordSet
    Me.Requery
    DoCmd.Save
    Dim db As Database
    Dim rs1 As Recordset
    Dim rs2 As Recordset
    Dim rs3 As Recordset
    Dim rs4 As Recordset
    If IsNull([Ang_Nr]) Then Exit Sub
    Set db = CurrentDb()
    Set rs1 = db.OpenRecordset("Abf_Angebotskopf", dbOpenDynaset)
    Set rs2 = db.OpenRecordset("Abf_Auftragskopf", dbOpenDynaset)
    Set rs3 = db.OpenRecordset("Abf_Angebotszeile", dbOpenDynaset)
    Set rs4 = db.OpenRecordset("Abf_Auftragszeile", dbOpenDynaset)
    rs1.FindFirst "[Ang_Nr] = " & [Ang_Nr]
    If Not rs1.NoMatch Then
    rs2.AddNew
    rs2![Kd_Nr] = rs1![Kd_Nr]
    rs2![Anrede] = rs1![Anrede]
    rs2![Name_feld] = rs1![Name]
    rs2![Rechnungsstraße] = rs1![Rechnungsstraße]
    rs2![RechnungsPLZ] = rs1![RechnungsPLZ]
    rs2![Rechnungsort] = rs1![Rechnungsort]
    rs2![Liefersstraße] = rs1![Liefersstraße]
    rs2![LieferPLZ] = rs1![LieferPLZ]
    rs2![Lieferort] = rs1![Lieferort]
    rs2.Update

    rs3.FindFirst "[ID] = " & [ID]
    If Not rs3.NoMatch Then
    Do Until rs3.EOF = True
    rs4.AddNew
    rs4![Art_Nr] = rs3![Art_Nr]
    rs4![Artikelbezeichnung] = rs3![Artikelbezeichnung]
    rs4![Stück] = rs3![Stück]
    rs4![Preis] = rs3![Preis]
    rs4![USt(%)] = rs3![USt(%)]
    rs4.Update
    rs3.FindNext "[ID] = " & [ID]
    Loop
    End If

    rs4.Close
    rs3.Close
    rs2.Close
    rs1.Close
    db.Close
    MsgBox ("In Aufträge kopiert!")
    Me.Sperren = True
    DoCmd.Close
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Auftrag"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Me![Auftrag].Form![Datum].SetFocus
    End If
    Exit_RecordSet:
    Set rs1 = Nothing
    Set rs2 = Nothing
    Set rs3 = Nothing
    Set rs4 = Nothing
    Set db = Nothing
    Exit Sub
    Err_RecordSet:
    MsgBox ("Ein Fehler ist aufgetreten!")
    Resume Exit_RecordSet

    Der Fehler muss relativ weit oben sein, glaube ich, denn wenn ich einfach nur die Schleife rausnehme tritt trotzdem ein Fehler auf!

    Einen Tipp?
    Lg Stevie
     
  5. q065sb Erfahrener User
    Vergessen zu sagen habe ich, dass es hier noch ein Ja/Nein Feld gibt, das zum Sperren des Datensatzes herangezogen wird - dieses wird beim Drücken des Buttons aktiviert und sperre beim Erstellen eines Auftrages aus einem Angebot das Angebot dauerhaft gegen Änderungen. Der Button funktioniert - zumindest im oberen Fall (Kopf). Eventuell könnte der Fehler daran liegen, dass ich dann nicht mehr im Focus bin und das UF aktiv ist - VBA sozusagen mit Me.Sperren nichts mehr anfangen kann???
     
  6. miriki Erfahrener User
    So'n "On Error goto xxx" ist eine feine Sache, wenn man weiß, daß ein Fehler auftreten kann und man den bewußt ignorieren will. Aber zum Fehler finden ist es eher kontraproduktiv.

    Kommentier die Zeile mal mit ' aus und schau dann, in welcher Zeile genau der Fehler auftritt. Meistens ist das schon Hinweis genug, was man tun muß.

    Gruß, Michael
     
  7. q065sb Erfahrener User
    Nein, also der Fehler liegt definitiv in der Schleife! Meine Abf_Angebotskopf hat als Primärschlüssel die Ang_Nr, also: rs1.FindFirst "[Ang_Nr] = " & [Ang_Nr]. Die Abf_Angebotszeile hat als Primärschlüssel ID, als Referenz zur Abf_Angebotskopf Ang_Nr. Rs3 muss jetzt aber doch wohl die Referenz durchsuchen, also wohl eher Ang_Nr, sprich :rs3.FindFirst "[Ang_Nr] = " & [Ang_Nr]. Das funktioniert aber genausowenig! Mir fehlt jetzt aber irgendwo der Hinweis wie rs3 jetzt die neue Referenz zwischen rs4 und rs2 erhält? Hab ich mich klar ausgedrückt? Der Auftrag hat im Endeffekt ne neue Auf_Nr als Primärschlüssel, unabhängig von der Ang_Nr. Jezt muss er aber sein UF auf diese Auf_Nr beziehen! Kann das das Problem sein?
     
  8. q065sb Erfahrener User

    Summen

    Vielleicht ist das ganze aber doch einfacher. Zu dem Zeitpunkt an dem ich die Schleife setze ist der neue Auftrag noch nicht gespeichert. Vielleicht kann einfach der RecordSet diese neue Auf_Nr nicht finden. Dann würde ein me!Abf_Auftragskopf.Save vor der Schleife helfen? Kann es daran liegen?
     
  9. miriki Erfahrener User
    die Zeile also mal raus:
    On Error GoTo Err_RecordSet

    Wozu die folgenden beiden? Und wenn, dann bitte eher hinter die DIM-Zeilen.
    Me.Requery
    DoCmd.Save


    Dim db As Database
    [...]

    Die folgenden Zeilen würde ich lieber weiter oben direkt hinter den DIM-Zeilen sehen, ist aber nur stilistisch und Geschmacksfrage.
    Set db = CurrentDb()
    Set rs1 = db.OpenRecordset("Abf_Angebotskopf", dbOpenDynaset)
    Set rs2 = db.OpenRecordset("Abf_Auftragskopf", dbOpenDynaset)
    Set rs3 = db.OpenRecordset("Abf_Angebotszeile", dbOpenDynaset)
    Set rs4 = db.OpenRecordset("Abf_Auftragszeile", dbOpenDynaset)


    [...]
    rs2.AddNew
    rs2![Kd_Nr] = rs1![Kd_Nr]
    [...]
    rs2.Update
    An dieser Stelle hast du einen neuen Datensatz erzeugt, der von der DB-Engine auch automatisch eine neue ID bekommen hat, vorausgesetzt, Du hast ein entsprechendes Feld definiert. Diese ID brauchst Du, um mit den Detail-Datensätzen darauf zu verweisen! Also sowas wie
    rs2id = rs2![ID]

    [...]

    Bis Du sicher, daß Du hier nach der ID suchen willst? Oder doch eher nach der Ref?
    rs3.FindFirst "[ID] = " & [ID]
    Bedenke: Du suchst in den Details rs3 nach allen Datensätzen, die zu dem Kopf ID in rs1 gehören. Jede Detail-Zeile hat wiederum aber eine eigene ID. Deswegen unterscheide ich bei den Feldnamen auch immer zwischen ID-Feld und Ref(erenz)-Feld. Oder, um's anders zu sagen: Ein ID-Feld hat immer einen eindeutigen Wert, deswegen würde ein FindNext nie was bringen - Die "1"-Seite der Beziehung. Ein Ref-Feld kann aber in mehreren Datensätzen mit dem gleichen Wert belegt werden - Die "n"-Seite der Beziehung.

    [...]
    rs4.AddNew
    rs4![Art_Nr] = rs3![Art_Nr]
    [...]
    rs4.Update
    Hier müßte es knacken, wenn du die Tabellen 1:n verknüpft hast. Denn Du hat rs4 nicht gesagt, zu welchem Datensatz in rs2 es verknüpft ist. Also so in der Art:
    rs4![Auf_Ref] = rs2id
    Und diese Zeile natürlich vor dem .update...

    [...]
    Auch die beiden Zeilen gehören ganz nach oben zu den anderen DIM-Zeilen:
    Dim stDocName As String
    Dim stLinkCriteria As String

    [...]

    Vielleicht hilft das schon weiter?

    Gruß, Michael
     
  10. q065sb Erfahrener User
    Ich glaub ich bin hierfür einfach zu blöd. Ich spiele mitlerweile wieder an der einfachen DP mit Ursprung und Ziel und komme auf exakt die gleichen Probleme. Er hängt sich bei jedem Drücken des Buttons auf - irgendwas tut sich also - nur eben nicht das richtige. Ich hab die DB angefügt falls du dir das Script des RecordSet-Buttons im Formular Abf_Ursprung ansehen möchtest:

    On Error GoTo Err_RecordSet
    Dim db As Database
    Dim rs1 As Recordset
    Dim rs2 As Recordset
    Dim rs3 As Recordset
    Dim rs4 As Recordset
    Dim stDocName As String
    Dim stLinkCriteria As String

    If IsNull([Ursprung]) Then Exit Sub

    Set db = CurrentDb()
    Set rs1 = db.OpenRecordset("Abf_Ursprung", dbOpenDynaset)
    Set rs2 = db.OpenRecordset("Abf_Ziel", dbOpenDynaset)
    Set rs3 = db.OpenRecordset("Abf_UrsprungUF", dbOpenDynaset)
    Set rs4 = db.OpenRecordset("Abf_ZielUF", dbOpenDynaset)
    rs1.FindFirst "[Ursprung_ID] = " & [Ursprung_ID]

    If Not rs1.NoMatch Then
    rs2.AddNew
    rs2![Ziel] = rs1![Ursprung]
    rs2![Datum] = rs1![Datum]
    rs2.Update
    rs2id = rs2![Ziel_ID]

    rs3.FindFirst "[Ursprung_ID] = " & [Ursprung_ID]
    If Not rs3.NoMatch Then
    Do Until rs3.EOF = True
    rs4.AddNew
    rs4![Ziel_ID] = rs2id
    rs4![Zeile] = rs3![Zeile]
    rs4.Update
    rs3.FindNext "[Ursprung_ID] = " & [Ursprung_ID]
    Loop
    End If

    rs4.Close
    rs3.Close
    rs2.Close
    rs1.Close
    MsgBox ("In Aufträge kopiert!")
    DoCmd.Close

    stDocName = "Abf_Ziel"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    End If

    Exit_RecordSet:
    Set rs1 = Nothing
    Set rs2 = Nothing
    Set rs3 = Nothing
    Set rs4 = Nothing
    Set db = Nothing
    Exit Sub

    Err_RecordSet:
    MsgBox ("Fehler")
    Resume Exit_RecordSet

    Ursprung_ID ist im Falle des Hauptformulars, also der Tabelle (und Abfrage) Ursprung tatsächlich die ID. Im Unterformular, sprich der Tabelle/Abfrage UrsprungUF ist Ursprung_ID dann natürlich die Referenz.
    Im ersten RecordSet suche ich also nach der ID für den Kopf, im zweiten dann die Referenz, die eben mehrere IDs annehmen kann. Ich habe versucht ihm diese Referenz für rs4 (hier Ziel_ID) aus rs2 Ziel_ID (dort dann tatsächlich ID) zuzuweisen. Offenbar ohne Erfolg.

    Ich hoffe echt du kannst mir helfen, bin langsam am Verzweifeln.
    Sag mal wie macht man dann eigentlich wirklich komplizierte Dinge - da wird man ja ganz irre!

    Lg Stevie
     
  11. miriki Erfahrener User
    Naja, wenn Du mal das "on error goto xxx" deaktiviert hättest, hättest du das auch recht schnell selbst erkennen können.

    1. Hinweis: Die "Kopf"-Daten werden in die 2. Tabelle übertragen, die "Details" nicht. Der grobe Bereich, wo man suchen muß, ist also schonmal eingeschränkt.

    2. Hinweis, nachdem das "on error" dann auskommentiert ist, ist schon kein Hinweis mehr, sondern der Stupser mit der Nase direkt drauf: Die Fehlermeldung "kein aktueller Datensatz" und im Debugger die Zeile "rs2id = rs2![Ziel_ID]" markiert.

    Ooops... Die hätte doch vor das update gehört, nicht dahinter. mea culpa...

    3. Hinweis, nachdem die Baustelle beseitigt ist: Das Verhalten sieht stark nach einer Endlos-Schleife aus. Wenn man's dann geschafft hat, mit Strg-C o.ä. die Code-Ausführung zu beenden, sieht man auch erwartungsgemäß eine Zeile innerhalb der DO..LOOP Schleife markiert. Ein Blick in die Detail-Tabelle zeigt eine beliebig riesige Anzahl an Datensätzen.

    Das Abbruch-Kriterium der Schleife wird also nicht erfüllt. Hmmm... Das mit der WHILE-Schleife meinte ich durchaus ernst... ;-) Aber EOF() ist in Deinem Fall die schlechtere Variante, das Ende der Datensätze abzufragen. Das klappt nur, wenn man mit movenext und eingeschränkter Abfrage (WHERE-Klausel) arbeitet.
    Code:
    rs.findfirst
    while not rs.nomatch
        [...]
        rs.findnext
    wend
    Mit findnext ist nomatch Dein Freund. ;-) Interessant, daß Du ihn hier nicht benutzt hattest, obwohl Du ihn bei den Kopf-Daten benutzt hast.

    Wenn man das anpaßt, dann scheint die Sache durchaus zu laufen, zumindest soweit ich das beurteilen kann.

    Code:
    Option Compare Database
    
    Private Sub Befehl4_Click()
    
        'On Error GoTo Err_RecordSet
    
        Dim db As Database
        Dim rs1 As Recordset
        Dim rs2 As Recordset
        Dim rs3 As Recordset
        Dim rs4 As Recordset
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        If Not IsNull([Ursprung]) Then
    
            Set db = CurrentDb()
            Set rs1 = db.OpenRecordset("Abf_Ursprung", dbOpenDynaset)
            Set rs2 = db.OpenRecordset("Abf_Ziel", dbOpenDynaset)
            Set rs3 = db.OpenRecordset("Abf_UrsprungUF", dbOpenDynaset)
            Set rs4 = db.OpenRecordset("Abf_ZielUF", dbOpenDynaset)
    
            rs1.FindFirst "[Ursprung_ID] = " & [Ursprung_ID]
            If Not rs1.NoMatch Then
    
                rs2.AddNew
                rs2![Ziel] = rs1![Ursprung]
                rs2![Datum] = rs1![Datum]
                rs2id = rs2![Ziel_ID]
                rs2.Update
             
                rs3.FindFirst "[Ursprung_ID] = " & [Ursprung_ID]
                While Not rs3.NoMatch
                    rs4.AddNew
                    rs4![Ziel_ID] = rs2id
                    rs4![Zeile] = rs3![Zeile]
                    rs4.Update
                    rs3.FindNext "[Ursprung_ID] = " & [Ursprung_ID]
                Wend
    
            End If
    
            rs4.Close
            rs3.Close
            rs2.Close
            rs1.Close
            MsgBox ("In Aufträge kopiert!")
            DoCmd.Close
           
            stDocName = "Abf_Ziel"
            DoCmd.OpenForm stDocName, , , stLinkCriteria
    
        End If
           
    Exit_RecordSet:
        Set rs1 = Nothing
        Set rs2 = Nothing
        Set rs3 = Nothing
        Set rs4 = Nothing
        Set db = Nothing
        Exit Sub
    
    Err_RecordSet:
        MsgBox ("Fehler")
        Resume Exit_RecordSet
    
    End Sub
    Gruß, Michael
     
  12. miriki Erfahrener User
    Was ich noch vergessen hatte:

    So'ne einfache msgbox bringt einem nicht viel. Dann weiß man zwar, daß ein Fehler aufgetreten ist, aber das war's auch schon.

    Ich würde grundsätzlich sowas in der Art wie
    Code:
    msgbox err.number & ": " & err.description
    verwenden, damit man wenigstens schonmal genauer weiß, welcher Fehler denn aufgetreten ist.

    Allerdings weiß man dann immer noch nicht genau, wo der Fehler aufgetreten ist, wenn man durch die Art des Fehlers nicht schon den Finger auf die Stelle legen kann.

    Insofern würde ich "on error goto xxx" nur dort einsetzen, wo man sich absolut sicher ist, daß nur Fehler auftreten, die man bewußt ignorieren bzw. umgehen will. Während der Entwicklungs-Phase ist diese Anweisung eigentlich eher ein "no, nay, never".

    Gruß, Michael
     
  13. q065sb Erfahrener User

    Summen

    Ich bedanke mich herzlich für die liebevolle Aufopferung in meinem Access-Fall. Zur Zeit habe ich (fast)alle Ratschläge befolgt und bin immer zu meinem erhofften Ergebnis gekommen. Eine bessere Hilfe kann man nicht bekommen - danke! Selbst die Angebot zu Auftrag-Konversion funktioniert jetzt tadellos.

    Als nächstes plane ich Buttons einzufügen die mir erlauben zuvor erstellte Angebote/Aufträge zu screenen und bei Bedarf die Daten im UF zu kopieren - um sich mühefolle Eingaben zu erparen sozusagen sofern es schon Angebote/Aufträge mit ähnlichen "Auftragsdetails" gibt. Ich muss anmerken, dass ich mich damit noch nicht beschäftigt habe - somit werde ich dich wahrscheinlich erst nächste Woche mit meinen auftretenden Problemen konfrontieren.

    Schönes Wochenende
    Lg Stevie
     
  14. miriki Erfahrener User
    Hihi... Da bin ich auf einer Fortbildung unterwegs... ;-)

    Ne, kein Problem, übernächsten Montag schau ich dann wieder rein und ggf. auch schon vorher.

    Aber so, wie sich das auf den ersten Blick anhört, ist es eigentlich genau das gleiche Thema, bei dem Du dann auch die gleiche Methode verwenden kannst. Nur, daß Du dann eben nicht von einer in die andere Tabelle kopierst, sondern in die gleiche zurück.

    Allerdings wirst Du dann wahrscheinlich wirklich nicht mehr um gesetzte Bookmarks beim Hin- und Her-Springen zwischen Original und Kopie herumkommen.

    Gruß, Michael
     
  15. q065sb Erfahrener User
    Ich bräuchte mal wieder nen (kleinen) Schubs in dir richtige Richtung *g*. Ich kann bis jetzt Angebote schreiben (DLookup) - diese in Aufträge umwandeln (Recordset) und zu jedem Auftrag (Auftragskopf) eine separate Stückliste erstellen. Diese DB soll in Zukunft in einer kleinen Tischlerei eingesetzt werden. Im Auftrag steht zB drinnen: Herr Max Mustermann (HF), im Unterformular/Auftragsdetails dann: Tisch Eiche. In den Stücklisten, die für die Produktion herangezogen werden steht dann zB: 4xTischbeine, 1x6cm Platte ...

    Wie gesagt, diese Stückliste gibts einmal pro Auftragskopf und hat eigentlich nichts mit den Auftragsdetails zu tun. Nun könnte es aber vorkommen, dass ein ähnlicher Auftrag auch einen Tisch verlangt. In diesem einfachen Beispiel wärs wahrscheinlich schneller die Bestandteile der Stückliste neu einzutragen, stell dir aber vor jemand bestellt ne Küche. Die Stückliste beinhaltet dann alle Teile, die hergestellt und/oder bestellt werden müssen. Jetzt wärs sinnvoll bei Eingabe eines neuen Auftrages Stücklisten voriger Aufträge als Vorlage zu kopieren.

    Ich hätte also gerne einen Button der mir erlaubt vorige Stücklisten zu durchsuchen (Vorschau, ohne Änderungsmöglichkeit), bei Fund einer passenden Stückliste diese dann in den aktuellen Datensatz zu kopieren.

    Das Problem ist, ich kann nicht einfach alte Stücklisten durchsuchen und einfach kopieren und als neuen Datensatz anfügen - es ist also keine einfache Kopie des aktuellen Datensatzes (da hier der Auftragskopf auch kopiert würde). Der neue Auftrag muss vorher schon bestehen - der Auftragskopf ist also schon da - nur das UF soll ergänzt werden. Somit komme ich über eine externe Suche nicht hinaus?

    Kannst du mir folgen? Ich bedanke mich für deine bereitwillige Hilfe.
    Lg Stevie
     
Thema:

Summen

Die Seite wird geladen...
  1. Summen - Similar Threads - Summen

  2. Zahlenreihe addieren

    in Microsoft Excel Hilfe
    Zahlenreihe addieren: Hallo, ich habe folgende Zahlenreihe: -5; -9; -11; 35; -2; -4; -8; 33; -3; -6; -9 Jetzt würde ich gerne mit einer Funktion nur die Zahlen von rechts nach links, ab dem letzten Eintrag -9,...
  3. Tabellensortierung kollidiert mit Formel

    in Microsoft Excel Hilfe
    Tabellensortierung kollidiert mit Formel: Liebes Forum, ich bin neu hier und habe eine vermutlich schnelle/einfache Frage: Ich habe eine (unsortierte) Tabelle und außerhalb der Tabelle eine Formel, die bestimmte Werte dieser Tabelle...
  4. VBA Summe bilden

    in Microsoft Excel Hilfe
    VBA Summe bilden: Hallo zusammen, in meiner per VBA generierten Tabelle mit unterschiedlicher Anzahl Zeilen möchte ich in Spalte D die Summe bilden, als von D1 bis Dx. Meine Formel bei 12 Zeilen:...
  5. Excel Summe bilden wenn bestimmtes Wort und Zahl in eine Zelle vorhanden

    in Microsoft Excel Hilfe
    Excel Summe bilden wenn bestimmtes Wort und Zahl in eine Zelle vorhanden: Hallo liebe Gemeinde, ich habe ein Problem. Ich möchte eine Summe bilden, wenn ein bestimmtes Wort in der Zelle vorhanden ist (die Zahl für die Summe ist ebenfalls in dieser Zelle): jede Zeile...
  6. Summen bis bestimmten Punkt zusammenrechnen?

    in Microsoft Excel Hilfe
    Summen bis bestimmten Punkt zusammenrechnen?: Hallo, ich habe hier meine Liste von Kunden, die mit EC-Karte bezahlen. Hier wird in unregelmässigen Abständen ein Kassenschnitt gemacht. Also mal jeden Abend, dann mal nach ein paar Tagen usw....
  7. Summe addieren in anderem Format

    in Microsoft Excel Hilfe
    Summe addieren in anderem Format: Ich habe eine Excel Tabelle mit einer Spalte, in dem die Summen in Philippinischen Peso formatiert sind. Vorne steht der Buchstabe "P", dahinter eine Zahl, bei der Komma und Punkt leider umgekehrt...
  8. Formel wenn Summe kleiner als null, dann null

    in Microsoft Excel Hilfe
    Formel wenn Summe kleiner als null, dann null: Hallo liebe Community! Ich benötige Hilfe bei der Erstellung einer Formel: G26+G29-G30 (in der Zelle G30 steht minus € 13,20) Wenn die Summe eine kleinere Zahl als Null ergibt, soll in G31 Null...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden