Προς το περιεχόμενο

MsAccess Field & Value...


Dangelo

Προτεινόμενες αναρτήσεις

Δημοσ.

Insomniacs HELP!!!!

 

Λοιπόν, το θέμα αφορά την MsAccess, εχω μια db η οποία έχει τους πινακες:

α) Προμηθευτες

β) Ειδη

γ) Παραγγελίες

δ) Λεπτομ. Παραγγελιών

ε) Παραλαβές

στ) Λεπτομέριες Παραλαβών

connections.jpg

 

Ολοι οι πίνακες είναι συνδεδεμένοι σωστά μεταξύ τους. Αυτό που θέλω να κάνω εγώ είναι:

Να παίρνω επιλέγοντας σε μια παραγγελία μου το είδος, την τελευταία τιμή που καταχώρησα στις παραγγελίες μου, βάζοντας ένα ποσοστό κέρδους το οποίο το ορίζω στον πίνακα "είδη".

 

Ξέρω πως θα κάνω τους υπολογισμούς τιμών, αυτό που δεν ξέρω είναι πως να συνδέσω το πεδίο της τιμής του πίνακα παραγγελίες με τον πεδίο της τελευταίας τιμής (βάση ημερομηνίας πάντα) πουτ είχα καταχωρήσει στον πίνακα Παραλαβές.

 

Όποια διευκρίνιση - βοήθεια - ιδέα αποδεκτή...

 

Thanks in advance..

Δημοσ.

Bασικα δεν καταλαβα ακριβως τι θες να κανεις, αλλα να σε ρωτησω κατι αλλο:

Υπαρχει καποιος λογος που εχεις χωρισει τα δεδομενα που αφορουν μια παραλαβη σου σε 2 tables στο tbl ΠΑΡΑΛΑΒΕΣ και στο tbl ΛΕΠΤΟΜΕ... ?

Δημοσ.

Γιατί δεν καταχωρείς την τρέχουσα τιμή του είδους στον πίνακα tblΕίδη;

Πώς προσθέτεις την τιμή που υπολογίζεις στο ερώτημα στα δεδομένα του πίνακα;

Δημοσ.

Η τρέχουσα τιμή του είδους βγαίνει απο τον πίνακα παραλαβές.

Σε μια βάση με 2500 είδη δεν μπορώ να ενημερώνω 2500 εγγραφες ξεχωριστά, αλλά μπορώ να κάνω παραλαβή (που κάνω) και να ενημερώνω τον πίνακα παραλαβές. Απο κει και πέρα είναι ένα ερώτημα να βγάλω την τελευταία τιμή κόστους.

Την τιμή την προσθέτω μέσα στην φόρμα πηγαίνοντας στα δεδομένα της φόρμας, εισάγωντας-ενώνοντας με μια σχέση τον πίνακα είδη και το ερώτημα ΤΤκόστους, ώστε να μου φέρει την τελευταία τιμή ανάλογα το είδος που θα επιλέξω.

 

Ίσως θα μπορούσα να φτιάξω έναν προσωρινό πίνακα "Temp Είδη" στον οποίο κάθε φορά που θα γίνεται μια παραλαβή, να διαγράφει και να ξαναεγγράφει το είδη με τις ΤΤκόστους. ???

Αλλά αυτό σε περίπτωση που θα είναι άλλος μέσα στην βάση δεν θα δημιουργήσει πρόβλημα?

Δημοσ.

Γιατί πρέπει να ενημερώνεις και τις 2500 εγγραφές ξεχωριστά; Μπορείς να ενημερώνεις μόνο τις εγγραφές που χρειάζεται.

 

Δημιούργησε ένα ερώτημα qrΠαραλαβές

SELECT tblΠαραλαβές.Ημερομηνία, tblΠαραλαβές.IDΠαραλαβής, tblΛεπτομέρειεςΠαραλαβής.IDΕίδους, tblΛεπτομέρειεςΠαραλαβής.Τιμή

FROM tblΠαραλαβές INNER JOIN tblΛεπτομέρειεςΠαραλαβής ON tblΠαραλαβές.IDΠαραλαβής = tblΛεπτομέρειεςΠαραλαβής.IDΠαραλαβής

ORDER BY tblΠαραλαβές.Ημερομηνία DESC , tblΠαραλαβές.IDΠαραλαβής DESC;

 

Εκείνο που τελικά θέλεις είναι κάθε φορά που επιλέγεις ένα Είδος για τη φόρμα ΛεπτομέρειεςΠαραγγελιών τότε να εμφανίζεται η τρέχουσα τιμή όπως αυτή έχει καταχωρηθεί στον πίνακα ΛεπτομέρειεςΠαραλαβών;

 

Αν λοιπόν θέλεις αυτό φαντάζομαι ότι στη φόρμα σου πρέπει να έχεις ένα σύνθετο πλαίσιο (cboΕίδος) από το οποίο επιλέγεις το είδος για κάθε νέα ΛεπτομέρειαΠαραγγελίας.

 

Θα μπορούσες να αντλήσεις την τρέχουσα τιμή για το είδος που επιλέγεις από το σύνθετο πλαίσιο με τον παρακάτω κώδικα.

 

Private Sub cboΕίδος_AfterUpdate()

Dim dbs As Database

Dim rst As Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("qrΠαραλαβές")

If Not rst.BOF Then

rst.MoveFirst

End If

rst.FindFirst "IDΕίδους=" & Me.cboSpecie.Column(0)

If rst.NoMatch = True Then

MsgBox "Δεν υπάρχει καταχωρημένη τιμή για το Είδος"

Else

Dim curCurrentPrice As Currency

curCurrentPrice = rst!Τιμή

Me.txtCurrentPrice.SetFocus

Me.txtCurrentPrice = curCurrentPrice

End If

rst.Close

End Sub

 

Οι παραπάνω παραπομπές στα στοιχεία ελέγχου της φόρμας σου ή πεδίων θα πρέπει να αλλάξουν ανάλογα με το πως τα έχεις ονομάσει καθώς και αν χρησιμοποιείς υποφόρμες.

Δημοσ.

Δεν ξέρω και πάρα πολλά απο VBA, έκανα αυτό:

 

Private Sub Κείμενο19_AfterUpdate()

Dim dbs As Database

Dim rst As Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("qry ΤΡΕΧΟΥΣΕΣ ΤΙΜΕΣ ΒΑΣΗ ΠΑΡΑΛΑΒΩΝ")

If Not rst.BOF Then

rst.MoveFirst

End If

rst.FindFirst "ID ΕΙΔΟΥΣ=" & Me.Κείμενο19.Column

If rst.NoMatch = True Then

MsgBox "Δεν υπάρχει καταχωρημένη τιμή για το Είδος"

Else

Dim curCurrentPrice As Currency

curCurrentPrice = rst!ΧΟΝΔΡΙΚΗ

Me.txtCurrentPrice.SetFocus

Me.txtCurrentPrice = curCurrentPrice

End If

rst.Close

 

End Sub

 

ΧΟΝΔΡΙΚΗ = το πεδίο που θέλω να φέρω απο το ερώτημα μου.

Κείμενο19 = το πεδίο που έχω μέσα στην φόρμα μου και θέλω να μου εμφανίζεται το ΧΟΝΔΡΙΚΗ

ID ΕΙΔΟΥΣ = O κωδικός του είδους μου.

 

Τί κάνω λάθος? ?

Thanks

Δημοσ.

SELECT [qry ΤΕΛΕΥΤΑΙΑ ΤΙΜΗ ΚΟΣΤΟΥΣ].[iD ΕΙΔΟΥΣ], [qry ΤΕΛΕΥΤΑΙΑ ΤΙΜΗ ΚΟΣΤΟΥΣ].ΤελευταίοΤουΤΙΜΗ, [tbl ΕΙΔΗ].[MARGIN ΧΟΝΔΡΙΚΗΣ], [tbl ΕΙΔΗ].ΠΕΡΙΓΡΑΦΗ, [tbl ΕΙΔΗ].[MARGIN ΛΙΑΝΙΚΗΣ], [tbl ΦΠΑ].ΠΟΣΟΣΤΟ, [ΤελευταίοΤουΤΙΜΗ]/[MARGIN ΧΟΝΔΡΙΚΗΣ] AS ΧΟΝΔΡΙΚΗ, ([ΤελευταίοΤουΤΙΜΗ]/[MARGIN ΛΙΑΝΙΚΗΣ])*(1+([ΠΟΣΟΣΤΟ]/100)) AS ΛΙΑΝΙΚΗ

FROM [tbl ΦΠΑ] INNER JOIN ([qry ΤΕΛΕΥΤΑΙΑ ΤΙΜΗ ΚΟΣΤΟΥΣ] INNER JOIN [tbl ΕΙΔΗ] ON [qry ΤΕΛΕΥΤΑΙΑ ΤΙΜΗ ΚΟΣΤΟΥΣ].[iD ΕΙΔΟΥΣ] = [tbl ΕΙΔΗ].[iD ΕΙΔΟΥΣ]) ON [tbl ΦΠΑ].[iD ΦΠΑ] = [tbl ΕΙΔΗ].[iD ΦΠΑ];

 

Ayto einai to qry...

Δημοσ.

Κάνε το εξής και δες πως λειτουργεί.

Στη φόρμα σου στην προέλευση στοιχείου ελέγχου του πλαίσιου κειμένου όπου θέλεις να εμφανίζεται η τιμή της Χονδρικής γράψε

 

=DLookUp("ΧΟΝΔΡΙΚΗ";"[qry ΤΕΛΕΥΤΑΙΑ ΤΙΜΗ ΚΟΣΤΟΥΣ]";"[qry ΤΕΛΕΥΤΑΙΑ ΤΙΜΗ ΚΟΣΤΟΥΣ]![iD ΕΙΔΟΥΣ]=" & [Φόρμες]!['ΟνομαΦόρμας]!['ΟνομαΣτοιχείουΕλέγχουΠουΠεριέχειΤοIDΕίδους])

 

Αν το [iD Είδους] περιέχεται σε ένα σύνθετο πλαίσιο από το οποίο επιλέγεις το Είδος τότε το παραπάνω γίνεται

 

=DLookUp("ΧΟΝΔΡΙΚΗ"; "[qry ΤΕΛΕΥΤΑΙ ΤΙΜΗ ΚΟΣΤΟΥΣ]"; "[qry ΤΕΛΕΥΤΑΙΑ ΤΙΜΗ ΚΟΣΤΟΥΣ]![iD ΕΙΔΟΥΣ]=" & [Φόρμες]![ΌνομαΦόρμας]![ΌνομαΣτοιχείουΕλέγχουΠουΠεριέχειΤοIDEίδους].Column(0))

Δημοσ.

ΟΚz,λύθηκε με την Dlookup, αλλα μου βγάζει #Σφάλμα, όταν δεν έχω επιλεγμένο είδος...

Παίζει τπτ άλλο, ετσι ώστε να μου εμφανίζει κενή (Null) τιμή?

 

Thanks!!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...