ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Διαχωρισμός δεδομένων πεδίου

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 08-07-10, 17:14
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-07-2010
Μηνύματα: 16
Προεπιλογή Διαχωρισμός δεδομένων πεδίου

Γεια σε όλους!
2 προβληματάκια για όποιον μπορεί να βοηθήσει:

-Εχω ένα "πίνακα01" με τρία πεδία: f1, f2, f3.
Στο πεδίο f1 έχω το ονοματεπώνυμο: πχ "Γεωργίου Γεώργιος". Πως μπορώ αυτόματα να ενημερώσω το πεδίο f2 με το "επώνυμο" και το πεδίο f3 με το "όνομα", σε έναν πίνακα με 500 τουλάχιστον ονοματεπώνυμα ?

-Εχω ένα πλαίσιο λίστας που διαβάζει στοιχεία από τον "πίνακα02" που περιέχει 3 πεδία (k1=red, k2=blue k3=orange) και ενημερώνει τον "πινακα03". Πως μπορώ, αφου επιλέξω απ το πλαίσιο λίστας το στοιχείο k1 πχ"red" να ενημερωθούν ταυτόχρονα τα πεδία z1, z2, z3 του "πινακα03" με τα αντίστοιχα k1, k2 & k3? Οι πίνακες δεν μπορούν να συνδεθούν γιατί είναι τελείως αναντίστοιχες οι τιμές..
Απάντηση με παράθεση
  #2  
Παλιά 08-07-10, 19:10
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Καλησπέρα...
Γιάννη καλώς μας ήλθες. Για το πρώτο ερώτημά σου, κάνε προσαρμογή του παρακάτω κώδικα και ελπίζω να σε καλύπτει.
Κώδικας:
Private Sub Diaxorisi_Click()

    Dim i As Integer

    With CurrentDb.OpenRecordset("tblOnomata", 2)
        .MoveFirst
        Do While Not .EOF
            i = InStr(1, !Ola, " ")
            If Not IsNull(i) Then
                If i > 0 Then
                    .Edit
                    !Eponimo = Trim(Left(!Ola, i))
                    !Onoma = Trim(Right(!Ola, Len(!Ola) - i))
                    .Update

                End If
            End If
            .MoveNext
        Loop
    End With
End Sub
[Ola] = το πεδίο που περιέχει ονοματεπώνυμα.

Μπορείς να 'φορτώσεις' την ρουτίνα όπου θες!

Για το δεύτερο ερώτημα ανέβασε κάποια δοκιμαστική βάση -ΣΥΜΠΙΕΣΜΈΝΗ- ώστε να δοθεί λύση. (Έχω κάποιες αμφιβολίες για το τι θες...)
Χαιρετώ / Νίκος Δ.
Απάντηση με παράθεση
  #3  
Παλιά 08-07-10, 21:54
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-07-2010
Μηνύματα: 16
Προεπιλογή

Νίκο καλησπέρα!
Ευχαριστώ για την γρήγορη και πολύ πετυχημένη απάντηση! Δουλεύει άριστα!!!

Για την άλλη απορία μου, ανεβάζω τη βάση βδ1...

Ο πίνακας tbl2 εχει ΜΙΑ μονο σειρά με 9 πεδία. Προσπαθώ να πετύχω το εξής: Αλλάζοντας οποιοδήποτε Σύνθετο πλαίσιο (τιμές από tbl1) να ενημερώνει ταυτόχρονα και τα διπλανά Σύνθετα πλαίσια και τα τρία αντίστοιχα πεδία του πίνακα tbl2..

Ευχαριστώ και πάλι!!!

Υ.Γ. Κατέβασα κάποιες βάσεις απο το forum αλλά δεν ανοίγουν... Μου βγάζει μήνυμα:
Δεν είναι δυνατό το ανοιγμα αυττού του αρχείου απο τη Microsoft Access
Το αρχείο αυτό βρίσκεται εκτός intranet κλπ.. κλπ...
Τι συμβαίνει?
Συνημμένα Αρχεία
Τύπος Αρχείου: zip βδ1.zip (46,7 KB, 17 εμφανίσεις)
Απάντηση με παράθεση
  #4  
Παλιά 08-07-10, 23:08
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Γιάννη, είμαι βέβαιος ότι έχεις πρόβλημα στη σχεδίαση αυτού που θέλεις να υλοποιήσεις.
  • Με φαίνεται τουλάχιστον άκομψο να εμφανιστεί σε ένα record του πίνακα των 9 πεδίων, 3 φορές η τριάδα: [Κιβώτιο] - [bx-12] - [cr001] !
  • Γιατί χρησιμοποιείς 9 Combo Box ;
  • Η φόρμα σου 'πατά' πάνω στον πίνακα των 9 πεδίων, οπότε δεν υπάρχει θέμα ενημέρωσης του πίνακα.
  • κλπ
Ακολουθώντας το σκεπτικό σου η λύση που προτείνω: Αφού ονόμασα το επάνω αριστερό combo11, το διπλανό combo12 και το τελευταίο της πρώτης γραμμής combo13, έγραψα τον κώδικα:
Κώδικας:
Private Sub combo11_AfterUpdate()
    Select Case combo11
        Case "Κιβώτιο"
            combo12 = "box-12"
            combo13 = "cr001"
        Case "Τεμάχιο"
            combo12 = "P-1"
            combo13 = "00856"
        Case "Χονδρική"
            combo12 = "large"
            combo13 = "526"
    End Select
End Sub
Ονόμασε το δεύτερο της πρώτης στήλης combo21 και το τελευταίο της πρώτης στήλης combo31, γράψε ότι έγραψα και είσαι εντάξει. (Προσοχή ! Να αλλάξεις τα ονόματα των σύνθετων πλαισίων διότι η Access έδωσε σε αυτά ονόματα με δυο διακριτές λέξεις)
Αγαπητέ Γιάννη, δες την σχεδίαση! Περιέγραψε τι θες να κάνεις και είμαι βέβαιος ότι εδώ στο Forum θα υπάρξουν προτάσεις που θα δώσουν την καλύτερη λύση.
Καλό βράδυ σε όλους μας / Νίκος Δ.

Υστερολόγιο : Άνοιξε τις βάσεις από 'ασφαλή' περιοχή π.χ. όρισε ασφαλή την επιφάνεια εργασίας σου
Απάντηση με παράθεση
  #5  
Παλιά 09-07-10, 06:45
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-05-2009
Περιοχή: Αθήνα
Μηνύματα: 169
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από Meteora Εμφάνιση μηνυμάτων
Καλησπέρα...
Γιάννη καλώς μας ήλθες. Για το πρώτο ερώτημά σου, κάνε προσαρμογή του παρακάτω κώδικα και ελπίζω να σε καλύπτει.
Καλημέρα σε όλους μετά από καιρό
Με ένα κενό η λύση αυτή δουλεύει τέλεια, αν όμως έχουμε περισσότερα τι γίνεται? ή άν έχουμε και άλλο χαρακτήρα που διαχωρίζει τα πεδία π.χ.(,) και τα στοιχεία είναι ανακατεμένα.
Είναι σωστή η λύση να χρησιμοποιήσουμε για 2η φορά την ίδια ρουτίνα όπως στο παράδειγμα ή υπάρχει ευκολότερος-γρηγορότερος τρόπος?
Όπως είναι κάνει δουλειά αλλά καθυστερεί αρκετά όταν έχεις αρκετές χιλιάδες εγγραφές.
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb diax_1.mdb (232,0 KB, 26 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 09-07-10, 15:54
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-07-2010
Μηνύματα: 16
Προεπιλογή

Καλησπέρα σε όλους!

Φίλε Νίκο,
υπάρχει σίγουρα πρόβλημα σχεδίασης της βάσης γιατί (ως αρχάριος) προσπαθώ να επεκτείνω-διορθώσω μια παλιά βάση αντί να προσπαθήσω (επειδή το φοβάμαι) να τη στήσω απ την αρχή......
Ο πίνακας tbl2 με τα 9 πεδία ( τρεις τριάδες) στην τελική του μορφή θά έχει... 120 πεδία (40 τριάδες) !!! Κάθε τριάδα θα βρίσκεται μόνο μια φορά στον πίνακα! Τα στοιχεία των πεδίων συμπληρώνονται μόνο μια φορά και τα χρειάζομαι ως ετικέτες για αναφορές-εκτυπώσεις και δεν επηράζουν την υπόλοιπη βάση.... Τα combo προσπαθώ να τα βάλω για αισθητικούς λόγους και για να πειραματιστώ με την access...
Ευχαριστώ για τον κώδικα αλλά θέλω οι τιμές να είναι από τον πίνακα tbl1 και όχι προκαθορισμένες...
Ας το κάνω πιο απλό το πρόβλημα:
-Ενα combo που διαβάζει 3 τιμές από τον tbl1
-Ενας πίνακας tbl2 με 3 πεδία f1 f2 f3
Υπάρχει τρόπος επιλέγοντας μια εγγραφή με το combo να ενημερώνονται ταυτόχρονα και τα τρία πεδία του tbl1?
Θα σκάσω απ την περιέργειά μου....

Φίλε Στέλιο
Ο τελευταίος (λόγω ασχετοσύνης) που θα σου έδινε απάντηση ειμαι εγώ...

Υ.Γ. Εβαλα το ms-office.gr στις ασφαλείς τοποθεσίες στον explorer και τώρα ότι κατεβάζω ανοίγει χωρίς πρόβλημα...
http://support.microsoft.com/kb/303650/el
Απάντηση με παράθεση
  #7  
Παλιά 10-07-10, 08:44
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

Καλημέρα σε όλους!

Φίλε μου Στέλιο, μπορείς να δημιουργήσεις το ένα ερώτημα (βλ. κώδικα SQL παρακάτω) και απ όπου μπορείς να τραβήξεις τα πεδία F1, F2, F3:
Κώδικας:
SELECT Replace(Replace([Ola]," ",";"),",",";") AS CleanArray_Ola,
 IIf([CleanArray_Ola]<>"" And InStr(1,[CleanArray_Ola],";")>0,
Mid$([CleanArray_Ola],Len([F1])+2,Len([CleanArray_Ola])
-Len([F1])),"") AS FHlp, IIf([CleanArray_Ola]<>"" And InStr(1,
[CleanArray_Ola],";")>0,Left$([CleanArray_Ola],InStr(1,[CleanArray_Ola],";")-1),"") AS F1,
 IIf([FHlp]="","",IIf(InStr(1,[FHlp],";")>0,Left$([FHlp],InStr(1,[FHlp],";")-1),[FHlp])) AS F2,
 IIf([FHlp]="","",IIf(InStr(1,[FHlp],";")>0,Right([CleanArray_Ola],
Len([CleanArray_Ola])-(Len([F1])+Len([F2])+2)),"")) AS F3
FROM tblStoixeia;
Δεν το δοκίμασα αλλά έχω την εντύπωση ότι δεν θα έχει ιδιαίτερο πρόβλημα ακόμα και σε πολλές χιλιάδες εγγραφές.
Αν έχει κάποιος το χρόνο, ας το τεστάρει και να μας πει τα αποτελέσματα.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #8  
Παλιά 10-07-10, 11:18
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-07-2010
Μηνύματα: 16
Προεπιλογή

Καλημέρα σε όλους!

Φίλε Νίκο,
έλυσα την απορία μου, χάρη σε μια παλιά σου απάντησή σου στο forum:
http://www.ms-office.gr/forum/access...combo-box.html

Κώδικας:
Private Sub combo01_AfterUpdate()
[f1_code_01] = combo01.Column(1)
[f1_code_02] = combo01.Column(2)
End Sub
Μπορώ λοιπόν με αλλαγή σε ένα combo να ενημερώνω 3 πεδία του πίνακα!
Ευχαριστώ για την βοήθειά σου!

Φίλε Τάσο,
δώσε μου λεπτομέρειες πως-που να χρησιμοποιήσω το κώδικά σου και θα το τεστάρω..
Εχω(?) χρόνο!
Ο κώδικας του Στέλιου χρειάστηκε 5΄΄ για να χωρίσει 15.000 εγγραφές σε pentium 4, 2.8GHz, 1GB ram,XP, access 2003...
Απάντηση με παράθεση
  #9  
Παλιά 10-07-10, 20:32
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

Γιάννη καλησπέρα!
Ο κώδικας του προηγούμενου μηνύματος μου είναι ένας παραδειγματικός κώδικας SQL
ενός ερωτήματος.
Δες και το συνημμένο παράδειγμά για να έχεις μια πιο πλήρη εικόνα.
Με συγχωρείτε που δεν αναλύω ή δεν εμβαθύνω τα θέματα όσο πρέπει αλλά...
οι διακοπές βλέπετε...

Φιλικά

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip diax_Query.zip (122,0 KB, 24 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 10-07-10 στις 20:53.
Απάντηση με παράθεση
  #10  
Παλιά 12-07-10, 13:44
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-07-2010
Μηνύματα: 16
Προεπιλογή

Καλησπέρα στους κάνοντες διακοπές!!!

Φίλε Τάσο,
δεν το πολυκατάλαβα, αλλά θα το ψάξω (γιατι είμαι περίεργος) οταν γυρίσω και εγώ από τις διακοπές!!!
Φεύγω Πέμπτη!!!


Καλά να περνάτε!
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Πίνακες ] Διαχωρισμός περιεχομένου (τχτ) πεδίου σε νέα πεδία qaggelos Access - Ερωτήσεις / Απαντήσεις 4 09-01-16 18:40
[ Ερωτήματα ] Διαχωρισμός Πεδίου σε πεδία jimrenoir Access - Ερωτήσεις / Απαντήσεις 2 18-12-14 18:51
Διαχωρισμός ενός πεδίου σε τρία μέρη gmax Access - Ερωτήσεις / Απαντήσεις 2 05-11-13 14:12
[ Πίνακες ] Διαχωρισμός πεδίου νομισματικής μονάδας ευρώ !!! artchrist73 Access - Ερωτήσεις / Απαντήσεις 2 12-04-13 23:41
[Συναρτήσεις] Μεταφορά Δεδομένων (διαχωρισμός δεδομένων) xristos Excel - Ερωτήσεις / Απαντήσεις 1 13-05-12 10:26


Η ώρα είναι 07:29.