Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

vba.access

Îåêßíçóå áðü ôï ìÝëïò jtp4. Τελευταία δημοσίευση από το μέλος jtp4 στις 21-11-2011, 13:42. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-11-2011, 10:26 68265

    vba.access

    Μπορεί να μου πει κάποιος πώς να φτιάξω ένα βρόγχο στον παρακάτω κώδικα στον όποιο να μαζέψω το σύνολο του para7 στην μεταβλητή para8 για κάθε διαφορετεικό para1
    Ευχαριστώ.
    Private Sub ËåðôïìÝñåéá_Format(Cancel As Integer, FormatCount As Integer)

    Dim db As Database
    Dim rs As Recordset
    Dim para1 As String
    Dim para2 As String
    Dim para3 As String
    Dim para4 As String
    Dim para5 As String
    Dim para6 As String
    Dim para7 As String
    Dim para8 As String

    para1 = Me.data1
    para2 = Me.data2
    para4 = Me.data3

    'MsgBox (para1)
    'MsgBox (para2)

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("Select (TransDocNo) as No from Trans Where TransItemCode=" & "'" & para1 & "'" & "and TransItemKlm = " & para2)
    rs.MoveFirst
    para3 = rs("No")

    'MsgBox (para3)

    Set db = CurrentDb
    Set rs = db.OpenRecordset("select max(TransItemKlm)as Klm2 from trans where transitemcode=" & "'" & para1 & "'" & "and TransDocNo<" & "'" & para3 & "'")
    rs.MoveFirst
    para5 = rs("Klm2")
    'MsgBox (para5)


    para6 = (para2 - para5) + 1
    'MsgBox (para6)
    Me.dklm = para6
    para7 = (para4 / para6) * 100
    'MsgBox (para7)


    End Sub
  •  21-11-2011, 10:57 68266 σε απάντηση της 68265

    Απ: vba.access

    Καλημέρα,

    Φαντάζομαι, ότι το πρόβλημά σου είναι ο χειρισμός των αποτελεσμάτων από το ερώτημα στην βάση - κώδικας που έχεις παραπάνω δεν κάνει χειρισμό των αποτελεσμάτων, ούτε λαμβάνει υπόψη του αν λαμβάνουν αποτελέσματα.

    Ο κώδικας χειρισμού αποτελεσμάτων είναι κάπως έτσι:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Set db = CurrentDb()
    Set rs = db.OpenRecordset(<SQL Code goes here>)
    If Not rs.EOF then
    	Do
    
    		para3 = rs("No")
    		...
    
    	Loop Until rs.EOF
    End If
    rs.Close

    Τα αποτελέσματα που αποθηκεύονται στο rs (Recordset) δύναται ή δεν δύναται να περιέχει records από την βάση - αυτός είναι και ο πρώτος έλεγχος που κάνει ο κώδικας. Αφού εξασφαλίσεις ότι έχεις τουλάχιστον μία εγγραφή, θα πρέπει με ένα βρόγχο να πάρεις μία-μία τις εγγραφές που έχουν επιστρέψει. Ο βρόγχος είναι το Do ... Loop Until που υπάρχει. Ο χειρισμός κάθε record είναι στο ενδιάμεσο...

     

    George J.

     

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  21-11-2011, 13:17 68268 σε απάντηση της 68266

    Απ: vba.access

    καταρχάς ευχαριστώ πολυ

    εχω βαλει τον προτυνόμενο βρογχο

    If Not rs1.EOF Then
    Do
     para8 = (para2 - rs1("Klm2")) + 1
     MsgBox (para8)
     rs1.MoveNext
    Loop Until rs1.EOF

    στο msgbox βλεπω τις τιμές του rs1 το μεγαλο μου προβλημα ειναι να τις αθροισω.

  •  21-11-2011, 13:27 68269 σε απάντηση της 68268

    Απ: vba.access

    Αν υποθέσουμε ότι θα προσθέσουμε μια μεταβλητή totalSum για να κρατήσει το γενικό άθροισμα, ο κώδικάς σου θα πρέπει να έχει την μορφή:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim totalSum as Long
    
    If Not rs1.EOF Then
    	totalSum = 0
    	Do
    		para8 = (para2 - rs1("Klm2")) + 1
    		totalSum = totalSum + para8
    		MsgBox (para8)
    		rs1.MoveNext
    	Loop Until rs1.EOF

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  21-11-2011, 13:39 68271 σε απάντηση της 68269

    Απ: vba.access

    Το έκανα αλλα μου επιστρέφει αποτέλεσμα ισο με το para8

     

  •  21-11-2011, 13:41 68272 σε απάντηση της 68271

    Απ: vba.access

    Private Sub ËåðôïìÝñåéá_Format(Cancel As Integer, FormatCount As Integer) Dim db As Database Dim rs As Recordset Dim rs1 As Recordset Dim db1 As Database Dim para1 As String Dim para2 As String Dim para3 As String Dim para4 As String Dim para5 As String Dim para6 As String Dim para7 As String Dim para8 As Long Dim para9 As Integer Dim count As Integer Dim totalsum As Long para1 = Me.data2 para2 = Me.data3 para4 = Me.data4 'MsgBox (para1) 'MsgBox (para2) Set db = CurrentDb() Set rs = db.OpenRecordset("Select (TransDocNo) as No from Trans Where TransItemCode=" & "'" & para1 & "'" & "and TransItemKlm = " & para2) rs.MoveFirst para3 = rs("No") 'MsgBox (para2) Set db1 = CurrentDb Set rs1 = db.OpenRecordset("select max(TransItemKlm)as Klm2 from trans where transitemcode=" & "'" & para1 & "'" & "and TransDocNo
  •  21-11-2011, 13:42 68273 σε απάντηση της 68272

    Απ: vba.access

    Private Sub ËåðôïìÝñåéá_Format(Cancel As Integer, FormatCount As Integer)
    Dim db As Database
    Dim rs As Recordset
    Dim rs1 As Recordset
    Dim db1 As Database
    Dim para1 As String
    Dim para2 As String
    Dim para3 As String
    Dim para4 As String
    Dim para5 As String
    Dim para6 As String
    Dim para7 As String
    Dim para8 As Long
    Dim para9 As Integer
    Dim count As Integer
    Dim totalsum As Long

    para1 = Me.data2
    para2 = Me.data3
    para4 = Me.data4
    'MsgBox (para1)
    'MsgBox (para2)

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("Select (TransDocNo) as No from Trans Where TransItemCode=" & "'" & para1 & "'" & "and  TransItemKlm = " & para2)
    rs.MoveFirst
    para3 = rs("No")
    'MsgBox (para2)

    Set db1 = CurrentDb
    Set rs1 = db.OpenRecordset("select max(TransItemKlm)as Klm2 from trans where transitemcode=" & "'" & para1 & "'" & "and TransDocNo<" & para3)
    rs1.MoveFirst
    para5 = rs1("Klm2")
    'MsgBox (para5)


    para6 = (para2 - para5) + 1
    'MsgBox (para6)
    Me.dklm = FormatNumber(para6, 0)
    para7 = (para4 / para6) * 100
    'MsgBox (para7)
    If Me.TransItemFreezer = True Then
    Me.dklm = 0
    End If

    If Not rs1.EOF Then
    totalsum = 0

    Do
     para8 = (para2 - rs1("Klm2")) + 1
     totalsum = totalsum + para8
     MsgBox (totalsum)
     rs1.MoveNext
    Loop Until rs1.EOF

    End If

     

     


    End Sub

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems