| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Γεια σας, Η συνημμένη βάση (http://www.ms-office.gr/forum/access...io-pinaka.html) δημιουργήθηκε χάρις στην εξαιρετική βοήθεια του φίλου του Forum Γιώργου(Kapetang). Στη βάση αυτή, αφού συμπληρώσουμε τα απαιτούμενα πεδία της φορμας, μπορούμε να υπολογίσουμε και να έχουμε στον πίνακα τις δόσεις μας ανά μήνα ή 2μηνο κλπ. Εργαζόμενος πάνω σε αυτή , διαπίστωσα ότι, σε ορισμένες περιπτώσεις, δεν υπάρχει ακρίβεια δεκαδικών μονάδων. Για παράδειγμα: Παράθεση:
να είναι απολύτως ακριβείς και να μην υπολείπονται ούτε στο ένα λεπτό, θα παρακαλούσα για τη τη βοήθειά σας: Είναι δυνατόν κατά τον υπολογισμό των εκάστοτε δόσεων το υπολειπόμενο λεπτό (ή λεπτά) να τίθεται(-νται) στο ποσό της τελευταίας δόσης? (Έτσι, όλες οι δόσεις μας θα είναι ισόποσες πλην της τελευταίας) |
|
#2
| |||
| |||
|
Καλησπέρα Φίλε Δημήτρη άλλαξε τον παλιό κώδικα του κουμπιού με τον: Κώδικας: Private Sub cmdAdd_Click()
Dim rs As DAO.Recordset, dt As Date, i As Long, sum As Double
Dim vPeriodos As Variant, strC As String, k As Long
On Error GoTo errHandler
'Ελέγχος καταχώρησης αναγκαίων στοιχείων
If Not ((IsDate(Me.DAYEX) And _
Nz(Me.KATIGORIAEX, "") <> "") And _
(Nz(Me.KATASTASIEX, "") <> "") And _
IsNumeric(Me.ARXEXODA) And _
IsNumeric(Me.SYNDOSEON) And _
(Nz(Me.PERIODOS, "") <> "") And _
IsNumeric(Me.Prokatavoli)) Then
MsgBox "Σε κάποια πεδία δε δόθηκαν κατάλληλες τιμές"
Exit Sub
End If
'Αποτροπή πολλαπλών καταχωρήσεων
strC = "DAYEX=#" & Format(Me.DAYEX, "m/d/yyyy") & "# And " & _
"KATIGORIAEX='" & Me.KATIGORIAEX & "' And " & _
"KATASTASIEX='" & Me.KATASTASIEX & "' AND ARXEXODA=" & _
Replace(Me.ARXEXODA, ",", ".") & " And " & _
"SYNDOSEON=" & Me.SYNDOSEON & " AND PERIODOS='" & Me.PERIODOS & "' And " & _
"TREXDOSI=1 AND Prokatavoli=" & Replace(Me.Prokatavoli, ",", ".")
If DCount("*", "tblExoda", strC) Then
MsgBox "Τα στοιχεία είναι ήδη καταχωρημένα"
Exit Sub
End If
'Καταχώρηση δεδομένων
vPeriodos = Array(1, 2, 3, 6, 12)
k = Me.PERIODOS.ListIndex
Set rs = CurrentDb.OpenRecordset("tblExoda")
dt = CDate(Me.DAYEX)
sum = Me.Prokatavoli
For i = 1 To Me.SYNDOSEON
rs.AddNew
rs!DAYEX = DateAdd("m", vPeriodos(k) * (i - 1), dt)
If i = Me.SYNDOSEON Then
rs!POSOEX = Me.ARXEXODA - sum
Else
rs!POSOEX = Round((Me.ARXEXODA - Me.Prokatavoli) / Me.SYNDOSEON, 2)
sum = sum + Round((Me.ARXEXODA - Me.Prokatavoli) / Me.SYNDOSEON, 2)
End If
rs!KATIGORIAEX = Me.KATIGORIAEX
rs!KATASTASIEX = Me.KATASTASIEX
rs!ARXEXODA = Me.ARXEXODA
rs!SYNDOSEON = Me.SYNDOSEON
rs!PERIODOS = Me.PERIODOS
rs!TREXDOSI = i
rs!Prokatavoli = Me.Prokatavoli
rs!PERIGRAFIEX = Me.PERIGRAFIEX
rs.Update
Next
MsgBox "Η προσθήκη των εγγραφών ολοκληρώθηκε"
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "Error #" & Err.Number
End Sub
|
|
#3
| |||
| |||
|
Καλησπέρα. Γιώργο, καταπληκτικά!!! Ο κώδικας μού δίνει ακριβώς αυτό που ήθελα. Αν μπορείς, ήθελα κάτι ακόμη: Στον πίνακα έχω προσθέσει και ένα υπολογιζόμενο πεδίο "SYNYPOLOIPO", το οποίο μού δίνει σε κάθε δόση το υπολειπόμενο ποσό. Αλλά με την παράσταση που έχω βάλει (Στρογγυλεμένη(([PosoDoseon])-(([TREXDOSI])*[POSOEX]);2)), δεν βγάζω υπόλοιπο μηδέν(0) στην τελευταία δόση! Έχεις καμιά ιδέα για το ποιά παράσταση θα βάλω στο υπολογιζόμενο πεδίο για να μού βγάζει στην τελευταία δόση ως υπόλοιπο μηδέν (0), που έιναι και το σωστό? Σε υπερευχαριστώ για τη βοήθειά σου... |
|
#4
| |||
| |||
|
Καλησπέρα Για τη διαμόρφωση του τύπου θα πρέπει να λάβουμε υπόψη μας. 1) Οι δόσεις, εκτός από την τελευταία, είναι ίσες με: Round(([ARXEXODA]-[Prokatavoli])/[SYNDOSEON];2) . 2) Η τελευταία δόση προκύπτει από την αφαίρεση του αθροίσματος των προηγούμενων δόσεων από το ποσό: [ARXEXODA]-[Prokatavoli] και κατά κανόνα διαφέρει από τις προηγούμενες. Με βάση τα παραπάνω θα πρότεινα να δοκιμάσεις τον τύπο: [ARXEXODA]-[Prokatavoli]-Round(([ARXEXODA]-[Prokatavoli])/[SYNDOSEON];2)*([TREXDOSI]-1)-[POSOEX] |
|
#5
| |||
| |||
|
Καλησπέρα Φίλε Γιώργο, σε υπερευχαριστώ και πάλι για τη βοήθειά σου. Η πρόταση σου δοκιμάστηκε στη βάση μου και λειτουργεί άψογα! Καλή συνέχεια... |
|
#6
| |||
| |||
|
Φίλε Δημήτρη να είσαι καλά!
|
|
#7
| |||
| |||
|
Καλησπέρα σε όλους. Παρακαλώ για την πολυτιμη βοηθεια σας. Θα μπορούσατε να με βοηθήσετε να προσθέσω α) την επιλογη εβδομαδιαία στην περίοδο δόσεων και β) να επιλέγω σταθερα την ημέρα της εβδομάδας π.χ κάθε Σάββατο Ευχαριστώ πολύ |
|
#8
| |||
| |||
|
Καλημέρα Γιάννη, κάνε δοκιμές στο συνημμένο. Η μέρα καταβολής των δόσεων συμπίπτει με τη μέρα της ημερομηνίας που καταχωρούμε στο πεδίο [Ημερομηνία]. Συνεπώς, αν θέλουμε οι δόσεις να καταβάλλονται κάθε «Σάββατο», θα πρέπει η ημερομηνία που καταχωρούμε στο πεδίο [Ημερομηνία] να είναι «Σάββατο». |
|
#9
| |||
| |||
|
Γιώργο σε ευχαριστώ πολύ για όλα!! Ειναι αυτο που ζητούσα. |
|
#10
| |||
| |||
|
Να είσαι καλά Γιάννη και καλή συνέχεια.
|
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| Εργαλεία Θεμάτων | |
| Τρόποι εμφάνισης | |
| |
Η ώρα είναι 20:18.


Αλλαγή σε γραμμικό τρόπο
