Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Μεταφορά περιεχομένου λίστας σε σύνθετο πλαίσιο άλλης φόρμας (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/510-metafora-periexomenoy-listas-se-sintheto-plaisio-allis-formas.html)

stavros2244 24-03-10 07:51

Μεταφορά περιεχομένου λίστας σε σύνθετο πλαίσιο άλλης φόρμας
 
Καλημέρα σε όλα τα μέλη του forum!
Απ' ότι έριξα μια ματιά στο περιεχόμενο, οφείλω να πω ότι κάνετε πολύ καλή δουλειά!

Στο θέμα μας τώρα!

Έχω μία φόρμα(frm2), στην οποία έχω μία λίστα(list1). Η λίστα είναι κενή και δέχεται τιμές από κομμάτι κώδικα από άλλα μέρη της φόρμας τα οποία χειρίζονται από τον χρήστη. Δηλαδή, ο χρήστης χειρίζεται σύνθετα πλαίσια, πλαίσια κειμένου κτλ και συμπληρώνεται η λίστα.
Αυτό που θέλω είναι όταν πατάω ένα κουμπί, να μεταφέρεται το index της λίστας σε έναν κενό πίνακα tbl1.
Σε μία άλλη φόρμα, χρησιμοποιώ ένα σύνθετο πλαίσιο, το οποίο θέλω να έχει rowsource το περιεχόμενο του πίνακα tbl1.
Ουσιαστικά, θέλω τα περιεχόμενα της λίστας - όταν αυτή συμπληρώνεται να περνάνε με ένα κουμπί ως rowsource ενός σύνθετου πλαισίου μίας άλλης φόρμας(frm2).

Πως θα μπορούσα να το κάνω αυτό?

Ευχαριστώ!

pm4698 24-03-10 12:51

Σταύρο είχα κι εγώ τέτοιο θέμα και δημιούργησα έναν πίνακα με δύο πεδία. Το ένα είναι το Αυτόματη Αρίθμηση(paperID) και το άλλο είναι το Author_name. Ο πίνακας ονομάζεται tblPaper ενώ η λίστα ονομάζεται author_list. Δοκιμάζω το παρακάτω για να περάσω τις τιμές του listbox στον άδειο πίνακα αλλά δεν δούλεψε..

Private Sub button_Click()

Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
Dim strSQL2 As String

strSQL = "INSERT INTO tblPaper (Auhor_name) VALUES(" & Me!author_list & ", "

If Me!l1.ItemsSelected.Count > 0 Then
For Each varItem In Me!author_list
strSQL2 = strSQL & Me!author_list.ItemData(varItem) & ");"
CurrentDb.Execute strSQL
Next varItem
End If

Exit Sub

End Sub

Αν τον παραμετροποιήσεις και δουλέψει ρίχτο!

stavros2244 24-03-10 21:36

Βρήκα άλλη προσέγγιση:
Με ανοιχτή την φόρμα form1ενώ ανοίγει η φόρμα frm2:

Στο click event του button βάζω:
Form_form2name.comboboxname.RowSource = Me.listboxname.RowSource

Στο Open event της φόρμας form2 βάζω:
Me.comboboxname.RowSource = Form_form1name.listboxname.RowSource
και δουλεύει μια χαρά.
Σκέφτηκα όμως, ότι θα δούλευε καλύτερα το παράδειγμά μου εάν το σύνθετο πλαίσιο το μετέτρεπα σε πλαίσιο κειμένου με rowsource από έναν πίνακα tblPaper. Αυτός ο πίνακας θα γεμίζει με κουμπί από την φόρμα που είναι το listbox. Έτσι, μετατρέπω τη φόρμα μου σε συνεχή και μου βγάζει το ίδιο για όλες τις τιμές της λίστας κάτι που θέλω στην εφαρμογή μου.
Δοκίμασα στο on click event του button το εξής:
currentdb.execute ("INSERT INTO tblPaper(Lastname) VALUES ('" & me.listboxname& "','" ) ;
αλλά μου βγάζει λάθος.
Να επισημάνω ότι ο πίνακάς μου έχει δύο πεδία. Ένα είναι αύξων αριθμός και το άλλο είναι το Lastname

stavros2244 25-03-10 19:52

Μήπως πρέπει να βάλω στην παρένθεση, το tblPaper(ID, Lastname) ?Δηλαδή να πρέπει να δηλώσω και τα δύο πεδία?Ή μήπως να αναφερθώ σε στήλες?

Tasos 25-03-10 20:43

Σταύρο καλησπέρα!
Παράθεση:

Να επισημάνω ότι ο πίνακάς μου έχει δύο πεδία. Ένα είναι αύξων αριθμός και το άλλο είναι το Lastname
Το listboxname τι πεδία έχει και ποια στήλη είναι δεσμευμένη;

Φιλικά

Τάσος

stavros2244 26-03-10 08:12

Το listbox είναι σε μορφή λίστα τιμών και το γεμίζω με ονόματα μέσω άλλων ερωτημάτων. Επίσης, έχει μία στήλη η οποία είναι και η δεσμευμένη. Άρα όταν πατάω το κουμπί, λογικά θα πρέπει να μου μεταφέρει την μοναδική στήλη που έχει με τα ονόματα στην στήλη Lastname του πίνακα tblPaper αλλά μου βγάζει πρόβλημα

Tasos 27-03-10 11:17


Καλημέρα!


Σταύρο, αν σου είναι εύκολο, επισύναψε μας ένα παράδειγμα για να μπορέσουμε να
έχουμε μια πιο πλήρη εικόνα του ζητούμενου σου και να σου δώσουμε την κατάλληλη απάντηση.

Φιλικά

Τάσος



stavros2244 27-03-10 14:15

1 Συνημμένο(α)
Στο συνημμένο φαίνεται αυτό που θέλω. Ο πίνακας tblPaper είναι κενός. Στην μία φόρμα μέσω comboboxes περνιούνται τα ονόματα στην λίστα της ίδιας φόρμας.

Έπειτα, πιέζοντας το κουμπί Transfer θέλω να μεταφέρονται οι τιμές της λίστας στο πεδίο Lastname του πίνακα tblPaper.
Έπειτα, έχω μία φόρμα η οποία έχει ένα textbox και είναι σε μορφή συνεχούς φόρμας. Το rowsource του textbox θα είναι η στήλη Lastname του μόλις συμπληρωμένου πίνακα tblPaper. και ως συνεχή φόρμα θα μου εμφανίζει κάθε Lastname του tblPaper σε ξεχωριστή εγγραφή.
Και κάτι άλλο που δεν ξέρω πως γίνεται..Στον αρχικό πίνακα με τα ονόματα tblNames, έχω άλλα δύο πεδία, τα πεδία Metaforiko και Eksoda.
Πως γίνεται στην τελική φόρμα σε κάθε εγγραφή να φαίνονται και οι τιμές των δύο πεδίων που αντιστοιχούν στον πίνακα?(Οι πίνακες tblPaper και tblNames δεν διασυνδέονται)

Meteora 27-03-10 21:34

ΚΑΛΗΣΠΕΡΑ
Παράθεση:

...Στην μία φόρμα μέσω comboboxes περνιούνται τα ονόματα στην λίστα της ίδιας φόρμας. Έπειτα, πιέζοντας το κουμπί Transfer θέλω να μεταφέρονται οι τιμές της λίστας στο πεδίο Lastname του πίνακα tblPaper...
Λοιπόν
Έχεις 5 (!) comboboxes σε μια φόρμα, απόλυτα ΙΔΙΑ (!!) και φορτώνεις -επιλέγοντας τιμές απο αυτά - μια περιοχή 'λιστα' (όπως την ονομάζεις) και μετά θες το περιεχόμενο της λίστας να πάει στο πεδίο (!!!) Lastname του πίνακα tblPaper

Μάλλον δεν τα λες καλά...

Νίκος Δ,

stavros2244 28-03-10 02:46

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

Συγνώμη αν δεν τα λέω καλά, απλά δεν ξέρω καλά access και προσπαθώ να μάθω

Meteora 28-03-10 09:09

Καλημέρα στην κοινότητα !

Να σε προτείνω τον εξής κώδικα :

Κώδικας:


Private Sub Εντολή22_Click()
 
    Dim db As Database
    Dim rst As Recordset
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tblPaper")
    With rst
        .AddNew
        !Lastname = Me!listbox1.Column(0, 0)
        .Update
        .Close
    End With
    Set rst = Nothing
    Set db = Nothing
 
End Sub

Όμως ! Aυτός διαβάζει ΜΟΝΟ την πρώτη εγγραφή του ListBox1. Φτιάξε ένα βρόχο που να διαβάζει και να καταγράφει στον πίνακα, όλες τις εγγραφές που περιέχονται στο ListBox1.
Καλή συνέχεια. Αν δεν μπορείς τα ...ξαναλέμε ! Μέχρι τότε :bye:
Νίκος Δ.

ΥΣ Διαγραφή δεν πρέπει να γίνεται στις εγγραφές του listBox1 ;

Tasos 28-03-10 22:43

1 Συνημμένο(α)
Καλησπέρα σε όλους!

Αγαπητέ φίλε Σταύρο, δες έναν απλό τρόπο στο συνημμένο όπου σε Combobox μιας φόρμας εμφανίζονται οι επιλεγμένες εγγραφές μιας άλλης.

ΥΓ. Ο Χρήστος (xele3628iw) έχει στην υπογραφή του "Αυτά που δεν ξέρεις φτιάχνουν μια βιβλιοθήκη που καθένας μας θα ήταν περήφανος να έχει."

Ο Γιάννης (nisgia) έχει στην υπογραφή του "Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!"

Κανένας μας δεν γεννήθηκε γνωρίζοντας τα πάντα!

Νομίζω ότι τα παραπάνω τα λένε όλα...
Βάζε τις ερωτήσεις σου στο φόρουμ όποιες κι αν είναι αυτές και να ξέρεις οτι θα σου απαντηθούν.

Φιλικά

Τάσος

Meteora 29-03-10 07:32

1 Συνημμένο(α)
Καλημέρα !
Για την περίπτωση όπου :
Παράθεση:

...Το πρόβλημά μου γενικότερα είναι ο τρόπος μεταφοράς του περιεχομένου μιας λίστας που συμπληρώνεται από τον χρήστη, στη στήλη ενός πίνακα, ο οποίος αποτελεί την προέλευση ενός textbox...




καταθέτω μια τελική πρόταση, στο συννημένο αρχείο. Τα μέλη και οι επισκέπτες μπορούν-εδώ- να δουν :
  • πως ενα textbox 'φορτώνε'ι τιμές σε ένα Listbox
  • πως μεταφέρονται όλες οι τιμές απο το listbox, σε εγγραφές πίνακα
  • πως αδειάζει ένα listbox.
Με εκτίμηση / Νίκος Δ.

ΥΣ Στο συννημένο του φίλου μου Τάσου, εμφανίζεται :
πως ελέγχεις αν μια φόρμα ειναι ανοιχτή ή όχι και επιπλέον
πως επιλέγοντας εγγραφές από μια φόρμα, τις μεταφέρεις σε textbox άλλης φόρμας !
Τάσο και για αυτή την προσφορά σου σε ευχαριστώ ...

stavros2244 29-03-10 09:34

Σας ευχαριστώ όλους για τις απαντήσεις σας!
Η τελευταία του Meteora είναι πιστεύω μία πολύ καλή λύση και ταιριάζει σε αυτό που ζητάω.

Μερικές τελευταίες ερωτήσεις..

1)Εάν δεν θέλω να διαγράφω τη λίστα, λογικά παραλείπω τη γραμή cmdDeleteListItems.( Ούτως ή άλλως η λίστα καθαρίζει όταν κλείσω και ξανανοίξω τη φόρμα! Στο παράδειγμά μου πρέπει να βάλω στην τελική φόρμα που τραβάει δεδομένα από τον πίνακα tblPaper (frmPaper) ένα κουμπί το οποίο να καθαρίζει τον πίνακα έτσι ώστε την επόμενη φορά να μπουν άλλα ονόματα στην λίστα και όχι να μπουν από κάτω μαζί με τα προηγούμενα. Πως θα μπορούσα να το κάνω αυτό?

2) Όσον αφορά τον πίνακα, στην φόρμα, μου εμφανίζει και μία κενή εγγραφή στο τέλος(φαντάζομαι είναι αυτή που βρίσκεται ως κενή καινούργια στον πίνακα). Πως θα μπορούσα να το κάνω να μην εμφανίζεται στη συνεχή φόρμα?

3) Μπορώ να περάσω στην τελική φόρμα(frmPaper) και άλλα πεδία του αρχικού πίνακα?Δηλαδή, εάν επιλέξω να μπουν στη λίστα 4 ονόματα και μεταφερθούν στη συνεχή φόρμα, θέλω σε κάθε εγγραφή να εμφανίζεται και η αντίστοιχη τιμή των πεδίων Metaforiko και Eksoda του αρχικού πίνακα για παράδειγμα.

Ευχαριστώ πολύ!

Meteora 29-03-10 11:21

1 Συνημμένο(α)
Καλημέρα
Αγαπητέ Σταύρο τα δυο πρώτα ερωτήματά σου είχαν λύση. Το τρίτο για να γίνει πρέπει να αλλάξεις δομή στους πίνακες! Η FormaPaper πατά πάνω στον πίνακα tblPaper που έχει ΜΟΝΟ μια πληροφορία (πεδίο LastName).
Δες τι θες και ...στο πως, θα βοηθηθείς απο το Forum...

Με εκτίμηση/ Νίκος Δ.

stavros2244 29-03-10 20:09

Ευχαριστώ πολύ για την απάντηση!Το ψάχνω για το πως θα περάσω τα πεδία που θέλω αλλά θέλω μία μικρή βοήθεια:
Πώς περνάω τιμές με την AddItem σε συγκεκριμένη στήλη της λίστας;
Πως μπορώ δηλαδή να δηλώσω το column της λίστας που θέλω να κάνω additem?
Ευχαριστώ

Meteora 29-03-10 22:16

1 Συνημμένο(α)
Αγαπητέ Σταύρο, δες μια διαχείριση όπου στην FormaPaper εμφανίζεται ένα πεδίο επιπλέον (το μέσο μεταφοράς!). Με τον ίδιο τρόπο εμφανίζεις και όποια άλλα πεδία του πίνακα TblNames θες.
Έχω επίσης αλλάξει τον τρόπο διαγραφής των περιεχομένων του πίνακα tblPaper.
Αυτά !
Φιλικά/ Νίκος Δ.

stavros2244 30-03-10 16:38

Φίλε Meteora σε ευχαριστώ πολύ για την συνάρτηση DLookUp.
Πραγματικά με βοήθησε πολύ και σε άλλα σημεία της βάσης μου. Το πρόβλημά μου λύθηκε!
Ευχαριστώ!


Η ώρα είναι 19:03.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2