Pleasure Δημοσ. 22 Ιουνίου 2005 Δημοσ. 22 Ιουνίου 2005 Αγαπητοί συμφορουμίτες καλησπέρα σας. Θα ήθελα το εξής. Έστω έχω μια βάση με 2 πίνακες με ίδια πεδία. Θα ήθελα όταν προσθέτω μια εγγραφή σε έναν πίνακα (μέσω μιας φόρμας πατώντας το κουμπάκι + που σχεδίασα) να προστίθεται η ίδια εγγραφή και στον άλλον πίνακα. Κατά τον ίδιο τρόπο θα ήθελα να διαγράφω μια εγγραφή κλπ. Δεν θέλω να το κάνω με Update Queries. Κάτι θα πρέπει να γίνεται με ADO κλπ αλλά δεν ξέρω τέτοιο κώδικα. Ευχαριστώ προκαταβολικά ...
Snolly Δημοσ. 22 Ιουνίου 2005 Δημοσ. 22 Ιουνίου 2005 Γιατί οχι με update queries; Τί εννοείς με ADO το ADO είναι είδος connection σε Database από ό,τι ξέρω...
daidalus Δημοσ. 22 Ιουνίου 2005 Δημοσ. 22 Ιουνίου 2005 Γιατί οχι με update queries; Τί εννοείς με ADO το ADO είναι είδος connection σε Database από ό,τι ξέρω... Δίκιο έχει ο φίλος εκτός και αν η Access παρέχει triggers (που δεν νομίζω). To ADO (ActiveX Data Objects) είναι ενα API για πρόσβαση σε βάσεις δεδομένων, με το οποίο μπορείς να εκτελέσεις queries στη βαση σου. http://www.w3schools.com/ado/default.asp
Pleasure Δημοσ. 22 Ιουνίου 2005 Μέλος Δημοσ. 22 Ιουνίου 2005 Δηλαδή δεν γίνεται με κώδικα να προσθέσω Records στον άλλο πίνακα ? Πρέπει να κάνω Update ή Addon query ?
Pleasure Δημοσ. 22 Ιουνίου 2005 Μέλος Δημοσ. 22 Ιουνίου 2005 Για να το καταφέρω αυτό μέχρι τώρα έκανα την μία φόρμα Subform μέσα στην κύρια φόρμα. Με το On click στο + τοποθετούσα στα πεδία της Subform τα δεδομένω των πεδίων της κυρίας φόρμας και με ένα Me.requery γινόταν και η αποθήκευση. Αυτό που θέλω είναι να παρακάμψω τις υποφόρμες, να μην τις χρησιμοποιώ. Επίσης να μην τρέχω Update Queries γιατί ουσιαστικά πρόκειται για μπακαλίστικη μέθοδο και μάλιστα σε πολλές περιπτώσεις αργή. Γι αυτό να ξέρετε κάτι σε VB ή οτιδήποτε άλλο θα επιθυμούσα την βοήθειά σας ...
UserXP Δημοσ. 23 Ιουνίου 2005 Δημοσ. 23 Ιουνίου 2005 Δεν ξέρω αν είναι αυτό που ζητάς, αλλά θα βοηθούσε αν έδειχνες τον κώδικα για το κουμπάκι + που σχεδίασες. > Sub AddSameRecord() Dim rs As New ADODB.Recordset Dim TableName As String TableName = "Table1" ' Το όνομα του πίνακα που θα ενημερώσεις rs.Open "Select * From [" & TableName & "]", _ CurrentProject.Connection, adOpenKeyset, adLockOptimistic rs.AddNew rs.Fields("aFieldName").Value = Text1 ' Το αντίστοιχο textbox στη φόρμα ' Το ίδιο για όλα τα πεδία rs.Update rs.Close End Sub Τη Sub AddSameRecord πρέπει να την καλείς από τον κώδικα στο κουμπί + Πολύ πιθανόν να γίνεται και μέσα στον κώδικα για το κουμπί + Όσο για το delete, τί κώδικα χρησιμοποιείς;
Pleasure Δημοσ. 23 Ιουνίου 2005 Μέλος Δημοσ. 23 Ιουνίου 2005 Φίλε είσαι ΜΕΓΑΣ. Αυτό ακριβώς που έψαχνα. Το δόκίμασα και δουλεύει εκπληκτικά. Για να σβήσω άκου τί κουφό έκανα (και εξακολουθώ να κάνω): - Είχα μέσα στην κεντρική φόρμα τα Subforms (που οδηγούσαν στους αντίστοιχους πίνακες). -Αντί να σβήνω εγγραφές έκανα Link τις subform με την κυρία φόρμα μέσω του Lot Numer (ενός συγκεκριμένου πεδίου που ήταν κοινό) και στη συνέχεια έδινα Null τιμές στα πεδία της Subform. Επομένως δεν έσβηνα εγγραφή αλλά μετέτρεπα όλα τα πεδία της εγγραφής σε Null. - Στην συνέχεια έτρεχα ένα Query για να κάνω Erase όλες τις Null Εγγραφές για κάθε πίνακα. Με λίγα λόγια μεγάλο ΠΑΚΕΤΟ !!! Τώρα τουλάχιστον γράφω με τον δικό σου τρόπο. Πώς όμως μπορώ να σβήσω με τον δικό σου τρόπο συγκεκριμένες εγγραφές (για παράδειγμα όπου Lot=33 όπου το Lot είναι απλά ένα πεδίο και όχι πεδίο-κλειδί). ????? Φίλε και πάλι σε ευχαριστώ. Είσαι ΣΩΤΗΡΑΣ έστω και για την εισαγωγή των δεδομένων ...
UserXP Δημοσ. 24 Ιουνίου 2005 Δημοσ. 24 Ιουνίου 2005 > Function DeleteRecord(FromTable As String, WhereFieldName As String, HasValue) As Boolean Dim rs As New ADODB.Recordset rs.Open "Select * From [" & FromTable & "]", _ CurrentProject.Connection, adOpenKeyset, adLockOptimistic rs.MoveFirst If TypeName(HasValue) = "String" Then ' Ο τύπος είναι string (και οι ημερ/νίες δίνονται σαν string) rs.Find "[" & WhereFieldName & "] = '" & HasValue & "'" Else ' Ο τύπος δεν είναι string (δουλεύει για αριθμούς, αλλά δεν το δοκίμασα για τους άλλους τύπους) rs.Find "[" & WhereFieldName & "] = " & HasValue End If If rs.EOF Then 'MsgBox "Η εγγραφή δεν βρέθηκε" DeleteRecord = False Else rs.Delete DeleteRecord = True End If rs.Close End Sub Νομίζω ότι τα ορίσματα της DeleteRecord είναι κατανοητά
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.