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

Ms Access (ή SQL) για δυνατούς λύτες !!!!


Pleasure

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

Δημοσ.

Για να δούμε τώρα. Πόσα απίδια πιάνει ο δικός σας σάκος γιατί εγώ δεν κατάφερα τίποτα.

 

Πως είναι δυνατό σε ένα ερώτημα, να δίνουμε μέσα από μία φόρμα

 

(αυτό είναι εύκολο, το ξέρω πχ με το Forms![mplamplampla]![data])

 

το βήμα και το loop σε ένα ερώτημα ώστε να παράξει σειριακά αποτελέσματα του στύλ:

 

[για βήμα:2 και για loop:5) να έχουμε αποτέλεσμα

 

2

4

6

8

10

 

φαίνεται απλό αλλά δεν είναι γιατί θα πρέπει με κάποιο τρόπο κάθε φορά να βλέπει την προηγούμενη μέγιστη τιμή και να προσθέτει το βήμα (στην περίπτωσή μας το 2).

 

Όσοι πιστοί στην Access ή SQL (Jet κατά προτίμιση) προσέλθετε

Δημοσ.

Το ερωτημα δεν θα κανει τιποτε αλλο? Δεν ειναι και πολυ σαφες το τι ακριβως εχεις στο μυαλο σου αλλα οσον αφορα το κομματι που λες οτι θες να βλεπει την προηγουμενη μεγιστη μπορεις να την αποθηκευσεις σε μια global variable την οποια θα ενημερωνεις με καθε επαναληψη του ερωτηματος. Φανταζομαι θα το κανεις σε VBA που εχει μεσα η access ετσι?

 

Τωρα αν το κανεις με query οπως λες δεν θα εχεις τιμες απο αλλους πίνακες?

Αν θες απλως μια ρουτινα που να σου φτιαχνει ακολουθιες αριθμων γραψτην να σου αποθηκευει ολη την ακολουθια σε καποιο array το οποιο μετα να απεικονιζεις με καποιο τροπο η να το σωζεις σε ενα νεο πινακα της access. Δε θυμαμαι να σου πω πως γινεται αυτο αλλα υπαρχουν πολλα τutorials που θα στο δειξουν.

Δημοσ.

Έχετε δίκιο πως είναι γενικό.

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

 

Η γεννήτρια αυτή θα μπορούσε να είναι ένα ερώτημα υπό μορφή Addon query.

 

 

Κατ αρχήν τα αποτελέσματα θέλω να φυλάσσοντα σε έναν πίνακα (με ένα πεδίο, πχ Integer ή Date).

 

Με λίγα λόγια θέλω απλά ένα ερώτημα που να μου παράγει μια ακολουθία αριθμών ή ημερομηνιών, δίνοντας την αρχή, το βήμα (step) καθώς και το μέγεθος της ακολουθίας (πχ 1000 αναπαραγωγές αριθμών), από μία φόρμα.

 

Εγώ σκέφτηκα το εξής:

 

- Αν θέλουμε να έχουμε βήμα 3 ημέρες και συνολική αναπαραγωγή 10 ημερών τότε έχουμε

 

dim i as integer

for i=1 to 10

docmd.openquery "Addon query που προσθέτει σε έναν πίνακα μια νέα εγγραφή"

next i

 

έτσι μπορώ με ένα Addon query να προσθέσω στον πίνακα των αποτελεσμάτων 10 εγγραφές. Το θέμα όμως είναι πως θα δομήσω αυτό το Query ώστε να προσθέτει κάθε φορά μια νέα ημερομηνία ή αριθμό, αυξημένο κατά χ (που θα το δίνω εγώ) σε σχέση με τον προηγούμενο.

 

Πρέπει να με καταλάβατε τώρα. Δεν είναι πάντως (τουλάχιστον για μένα) και τόσο εύκολο ...

Δημοσ.

Δεν ξερω πως λειτουργει το openquery. Για να προσθεσω εγγραφες σε ενα πινακα θα χρησιμοποιουσα το docmd.runsql για να περασω insert statements.

 

πχ

 

insert into pinakas values (5);

 

Αν εχεις εναν πινακα (με το ονομα πινακας) που εχει μονο μια στηλη με ακεραιους αυτο θα σου προσθετε μια εγγραφη με τιμη 5.

 

για να το κανεις αυτο, πρεπει να εχεις loop που θα δημιουργει το sql statement δυναμικα.

 

φτιαξε μια string πχ sqlcommand

Ο αριθμος που θα προστιθεται μπορει να φτιαχτει ειτε με global variable οπως ειπα ειτε πολ/ζοντας το βημα με τον αριθμο επαναληψεων

πχ number = 1 * step

μετα το number το μετατρεπεις σε string. Νομιζω υπαρχει function tostr ή κατι τετοιο

 

μετα φτιαχνεις το sql statement σαν string πχ

sqlcommand = "insert into pinakas values (" + number + ")"

Δεν θυμαμαι αν στην access θελει ερωτηματικο στο τελος, νομιζω οχι

Αφου εχεις την εντολη, το μονο που μενει:

DoCmd.RunSQL sqlcommand

 

Το λεω καπως προχειρα αλλα πιστευω οτι θα καταλαβες πως περιπου θα φτιαξεις τη ρουτινα.

 

Μπορεις στη φορμα να εχεις ενα κουμπι που θα την καλει. Η ρουτινα θα παιρνει παραμετρους το πληθος επαναληψεων και το βημα.

 

Οι τιμες θα προστιθενται στον πινακα καθε φορα που θα την τρεχεις. Αν θες καθε φορα που την τρεχεις ο πινακας να αδειαζει απο τις παλιες θα πρεπει να προσθεσεις και μια εντολη που το κανει αυτο.

Στην SQL η εντολη ειναι του στυλ: delete * from pinakas

 

Αν ξερεις με το openquery πιο ευκολο τροπο πες μας

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

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

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