Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Ερωτήματα ] Ενημέρωση ενός field πίνακα από 3 Rows άλλου πίνακα (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/594-enimerosi-enos-field-pinaka-apo-3-rows-alloy-pinaka.html)

stathas 17-05-10 12:51

Ενημέρωση ενός field πίνακα από 3 Rows άλλου πίνακα
 
Γειά σας

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

Π.Χ.

Στήλη Orders
2A
5A
1Ds

Με Concatenation να γίνουν (2A, 5A, 1Ds) και να κάνω update ένα field σε άλλο πίνακα.

Πως μπορώ να το επιτύχω αυτό;

serviceman 17-05-10 13:57

Καλησπέρα

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

πχ

ονομα | επιθετο |πατρώνυμο
-------------------------------------------
George | Ioannou | Petros

όνομα&επίθετο&πατρώνυμο θα δώσει GeorgeIoannouPetros


Με εκτίμηση

Σταύρος

stathas 17-05-10 14:06

Ενημέρωση ενός field πίνακα από 3 Rows άλλου πίνακα
 
Σε ευχαριστώ για την απάντηση.
Αυτό που λές το γνωρίζω όμως εγώ έχω αυτό το πρόβλημα και δεν ξέρω με ποιόν τρόπο θα το λύσω. Ουσιαστικά οι 3 Rows πρέπει να μετατραπούν κατά κάποιον τρόπο σε μία Row με 3 fields και στην συνέχεια να γινει concatenation.

Meteora 17-05-10 14:15

Καλημέρα και από μένα !
Στάθη, ο πίνακας έχει τρία (3) record ή έχει πολλά και θες ανα τριάδα να συμβεί αυτό που περιγράφεις ;
Φιλικά/ Νίκος Δ.

stathas 17-05-10 14:25

Νίκο αυτή την στιγμή έχει 3 records.
Με ενδιαφέρει να γίνεται η εργασία για όσα records περιέχει αυτός ο πίνακας. Δεν θα υπάρχει διαχωρισμός σε τριάδες ή τετράδες.
Ο πίνακας αυτός γίνεται συνέχεια delete και ξαναδημιουργείται.

Με εκτίμηση
Στάθης

Tasos 17-05-10 15:52

1 Συνημμένο(α)
Γεια σας!

Στάθη, Σταύρο, καλωσορίσατε στο φόρουμ!

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

Φυσικά, κάθε περεταίρω αυτοματισμός μέσω VBA δεν αποτελεί πρόβλημα.

Φιλικά

Τάσος

serviceman 17-05-10 16:26

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

Τους χαιρετισμούς μου!

stathas 18-05-10 07:32

Σας ευχαριστώ πολύ όλους σας. Τελικά ήταν αυτό που ήθελα. Όλα τέλεια.

Με μεγάλη εκτίμηση

Στάθης

nisgia 23-05-10 10:36

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

Με την ευκαιρία, να θυμίσω μια χρήσιμη για την περίπτωσή μας
και πολύ ευέλικτη μέθοδο του αντικειμένου ADODB.Recordset:
Τη μέθοδο GetString η οποία φαίνεται στο παρακάτω παράδειγμα:

(απαιτείται η αναφορά σε μια διαθέσιμη βιβλιοθήκη Microsoft AxtiveX Data Objects)
Κώδικας:

Function ConcatenateField( _
        cnn As ADODB.Connection, _
        strTable As String, _
        strField As String, _
        Optional strListSeparator = ";") As String

    Dim strTemp As String
    Dim rst As ADODB.Recordset

    On Error GoTo ExitHere
    If cnn.State = 1 Then
        Set rst = New ADODB.Recordset
        With rst
            .Open "Select [" & strField & "] " _
                    & "From [" & strTable & "] " _
                    & "Where [" & strField & "] Is Not Null", _
                    cnn, adOpenDynamic, adLockReadOnly

            If Not (.EOF And .BOF) Then
                strTemp = .GetString(, , , strListSeparator)
                If Len(strTemp) > 1 Then
                    strTemp = Left$(strTemp, Len(strTemp) - 1)
                    ConcatenateField = strTemp
                End If
            End If
            .Close
        End With
    End If
ExitHere:
    Set rst = Nothing
End Function

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

Για παράδειγμα:
Κώδικας:

Private Sub Form_Load()
    Me.cboMyProducts.RowSource = ConcatenateField( _
            CurrentProject.Connection, "tblProducts", "fldProductName")
End Sub

Όπως πιθανότατα καταλάβατε, το όρισμα cnn, μπορεί να "βλέπει" σε οποιαδήποτε
προσπελάσιμη από την εφαρμογή μας βάση δεδομένων.

Τα λέμε!
Γιάννης


Η ώρα είναι 06:33.

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


Content Relevant URLs by vBSEO 3.3.2