Neuigkeiten:

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

Mobiles Hauptmenü

Werte selektierter Datensätze auslesen

Begonnen von Kinimod, Oktober 18, 2019, 10:15:14

⏪ vorheriges - nächstes ⏩

Kinimod

Danke, du hast mir sehr geholfen, ich denke damit komm ich erstmal klar :)

Die Datentypen passen teilweise nicht, da ich die Daten geändert habe. Bei den echten Daten ist es häufig ein Buchstaben Zahlen Mix.

DF6GL

Hallo,


ZitatDie Datentypen passen teilweise nicht, da ich die Daten geändert habe.

Grenzt ja schon an Irreführung und führt zu eklatant fehlerhaften Lösungen, die Dich eher verwirren als helfen ::) 

Kinimod

Beim nächsten mal achte ich drauf, dass die Beispieldaten in ihrer Form den richtigen Daten entsprechen. :) Ich hab gar nicht dran gedacht, dass das ja auch einen Unterschied machen kann.

Gibt es eine Möglichkeit, dass was momentan über den Button läuft anders zu starten, sodass man die Datenblattansicht nutzen kann?
Das Endlosformular ist ein seiner Breite begrenzt und erlaubt es dem Nutzer auch nicht die Breite/ Höhe der Felder/ Datensätze zu variieren. Leider gibt es einige Felder die ich unterbringen muss, und auch ein paar die teilweise etwas Text enthalten da wäre es praktisch, wenn man das Feld groß ziehen kann, wenn man den Text braucht.

Auf jeden Fall nochmal Danke und ein schönes Wochenende dir/euch :)

DF6GL

Hallo,

evtl. könnte ein Unterformular in Datenblattansicht zum gewünschten Ziel führen...

Beaker s.a.

Hallo,
Zitatwenn man das Feld groß ziehen kann, wenn man den Text braucht.
Das geht einfach mit Shift-F2, wenn das Feld den Focus hat.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Kinimod

Danke, das mit dem Unterformular hat gut geklappt und der Hinweis mit Shift- F2 ist auch sehr nützlich :)

Ein kleines Problem ist aber noch aufgetaucht, wenn ich die markierten Datensätze bearbeitet habe möchte ich die Markierung gleich entfernen.
Das wollte ich einfach mit
        rs.Edit
        rs!Markiert = False
        rs.Update
machen. Bei dem ersten Datensatz klappt das auch danach bekomme ich jedoch die Fehlermeldung:
"Laufzeitfehler 3197:
Das Microsoft Access- Datenbankmodul hat den Vorgang angehalten, da Sie und ein weiterer Benutzer gleichzeitig versuchen , dieselben Daten zu änder."
Ich bin zurzeit der einzige Nutzer und weiß nicht wodurch der Fehler verursacht wird.

atropos


Hallo

ich habe bei so etwas auch immer Schwierigkeiten mit der Sperrung. Umgehe das meist mit einem SQL Statement, sofern der DS im Formular nicht bearbeitet wird:

Dim sSQL$
sSQL = "UPDATE Tabelle SET Tabelle.Markiert=Not(Tabelle.Markiert) WHERE ((Tabelle.Index)=" & Me.Index & ")"
CurrentProject.AccessConnection.Execute sSQL
Me.Requery
Gruss
atropos

DF6GL

Hallo,

Zitatwenn ich die markierten Datensätze bearbeitet habe möchte ich die Markierung gleich entfernen.

Zeige mal die komplette(n) Prozedur(en)..

Möglicherweise hilft ein Me.Dirty=false , um den Eingabemodus (und damit deine eigene Sperrung)  zu beenden.

Kinimod

Hallo,

das ist mein Code, soweit funktioniert er auch wie er soll, nur eben das abwählen der Markierung noch nicht. Me.Dirty=false hab ich schon an verschiedenen Stellen probiert hat aber nicht geholfen
Private Sub btnWord_Click()

Me.Dirty = False

Dim rs As DAO.Recordset, objWord As Object
Dim F308doc
Dim customerList As String
Dim customer As String
Dim poList As String
Dim PO As String
Dim oTable As Table
Dim row As Integer
Dim docName As String

Set objWord = CreateObject("Word.Application")
Set F308doc = objWord.Documents.Open("C:\Users\TEST\Documents\DB\Makro\F308.docx")
Set oTable = F308doc.Bookmarks("poTabelle").Range.Tables(1)
Set rs = Me.RecordsetClone

objWord.Visible = True
rs.MoveFirst

row = 5
PO = rs!PO
poList = PO
docName = "Lieferschein_"
customer = rs!customer

If Left(PO, 1) = "c" Or Left(PO, 1) = "C" Then
    customerList = "TESTKUNDE: " & customer
Else
    customerList = customer
End If

Do Until rs.EOF

    If rs![Markiert] Then
   
        customer = rs!customer
       
        If InStr(customerList, customer) = 0 Then
            customerList = customerList & "; " & customer
        End If
       
        PO = rs!PO
       
        If InStr(poList, PO) = 0 Then
            poList = poList & "; " & PO
        End If
       
        oTable.cell(row, 2).Range.insertafter rs!PO
        oTable.cell(row, 3).Range.insertafter rs!Pos
        oTable.cell(row, 4).Range.insertafter rs![Item Description]
        oTable.cell(row, 5).Range.insertafter rs!Quantity & "/" & rs!Quantity
        oTable.cell(row, 6).Range.insertafter "1"
        oTable.cell(row, 7).Range.insertafter rs![Delivery Date]
       
        'If Me.Dirty Then Me.Dirty = False
        rs.Edit
        'If Me.Dirty Then Me.Dirty = False
        rs!Markiert = False
        If Me.Dirty Then Me.Dirty = False
        rs.Update
       
        row = row + 1
       
    End If
   
    rs.MoveNext
   
Loop
 
oTable.cell(1, 2).Range.insertafter customerList
oTable.cell(2, 2).Range.insertafter poList

docName = docName & poList
docName = Replace(docName, "/", "-")
docName = Replace(docName, "; ", "_")
F308doc.SaveAs2 FileName:=docName & ".docx", FileFormat:=wdFormatDocumentDefault

   


Set objWord = Nothing
rs.Close
Set rs = Nothing
End Sub

DF6GL

Hallo,

wirf hier:
Zitat.
.
.
        'If Me.Dirty Then Me.Dirty = False
        rs.Edit
        'If Me.Dirty Then Me.Dirty = False
        rs!Markiert = False
        If Me.Dirty Then Me.Dirty = False
        rs.Update
.
.


die Dirty-Geschichte heraus.

Kinimod

Ja, dass habe ich nur zum ausprobieren drin, da ich bei der Lösungssuche auch auf den me.dirty Ansatz gestoßen bin, aber nicht genau wusste an welche Position das gehört.