freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

Μηδένισμα τιμών πρωτεύοντων κλειδιών


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » SQL και SQL Servers (RDBMS) » MS Access
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [7 Μηνύματα]       Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
majuranus


Μέλος από: 01 Μαρ 2006
Βοηθήματα: 1
Μηνύματα: 256+

Περιοχή: Veria
View users profile Visit posters website
ΜήνυμαΣτις: 28 Νοε 2008 21:19    Θέμα: Μηδένισμα τιμών πρωτεύοντων κλειδιών
Περιγραφή θέματος: Γίνεται?
Απάντηση με παράθεση  Mark this post and the followings unread

Υπάρχει τρόπος να μηδενίσω τις τιμές από τα πρωτεύοντα κλειδιά σε μία βάση??
και να αδειάσει γενικά η βάση
Κάτι σαν αρχικοποίγση εννοώ??

(αν γίνεται χωρίς να χρειαστεί όμως να σβήσω σχέσεις και τα πεδία κλειδιών και να τα ξαναδημιουργώ)

_________________

Ειδήσεις από όλη την Ελλάδα
kon73
Script Master

Μέλος από: 13 Απρ 2008
Βοηθήματα: 3
Μηνύματα: 224


View users profile Visit posters website
ΜήνυμαΣτις: 03 Δεκ 2008 13:03    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Ο κώδικας VBA για διαγραφή όλων των εγγραφών ενός πίνακα είναι ο

Docmd.RunSQL("Delete * From TblName")

Όμως πρέπει πρώτα σε πίνακες που έχουν σχέση Ένα προς Πολλά να διαγράψεις τους πίνακες που έχουν την σχέση πολλά και μετά να σβήσεις τις εγγραφές που έχουν την σχέση Ένα.

Υπάρχει και ένας κώδικας τον οποίο έφτιαξα και ελέγχει σε όλους του πίνακες ποια είναι τα PrimaryKey (Με την προϋπόθεση ότι δεν έχεις κάποια σχέση που προϋποθέτει την παραπάνω σειρά που ανέφερεα) και εφόσον εξάγει ποια πεδία είναι primarykey τα ενημερώνει με τον αριθμό 0.

κώδικας:

Public Function InitialPrimaryKey()
Dim db As Database
Dim td As TableDef
Dim idxLoop As Index
Dim StrIndex As String

Set db = CurrentDb

For i = 0 To db.TableDefs.count - 1
                Set td = db.TableDefs(i)
                For Each idxLoop In td.Indexes
                    If idxLoop.Primary = True Then
                        StrIndex = Mid(idxLoop.Fields, 2)
                        If StrIndex <> "" Then
                            If Left(db.TableDefs(i).Name, 4) <> "MSys" Then
                                DoCmd.RunSQL ("UPDATE " & db.TableDefs(i).Name & " Set " & StrIndex & "=0")
                            End If
                        End If
                        Exit For
                    End If
                Next idxLoop
               
Next
    db.Close
    Set db = Nothing
End Function


Φιλικά

kon73

_________________
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
majuranus


Μέλος από: 01 Μαρ 2006
Βοηθήματα: 1
Μηνύματα: 256+

Περιοχή: Veria
View users profile Visit posters website
ΜήνυμαΣτις: 03 Δεκ 2008 13:26    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

παράθεση:
Όμως πρέπει πρώτα σε πίνακες που έχουν σχέση Ένα προς Πολλά να διαγράψεις τους πίνακες που έχουν την σχέση πολλά και μετά να σβήσεις τις εγγραφές που έχουν την σχέση Ένα.


Επειδή νομίζω ότι δεν κατάλαβα καλά...

1α) την εντολή docmd.runsql("Delete * From *") αν την πληκτρολογήσω θα δουλέψει η πρέπει ένα-ένα?
1β) Που την γράφω αυτή την εντολή?

Να διαγράψω τους πίνακες που έχουν την σχέση πολλά? μετά πρέπει να τους ξανακάνω? η εννοείς ότι πρέπει να διαγράψω τα κλειδιά από τους πίνακες? η να διαγράψω τις εγγραφές από τους πίνακες που έχουν τη σχέση πολλά?

δεν κατάλαβα καλά????

_________________

Ειδήσεις από όλη την Ελλάδα
kon73
Script Master

Μέλος από: 13 Απρ 2008
Βοηθήματα: 3
Μηνύματα: 224


View users profile Visit posters website
ΜήνυμαΣτις: 03 Δεκ 2008 14:17    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Σε μία σχέση μεταξύ δύο πινάκων υπάρχει ο γονέας ας πούμε το (ΕΝΑ) και ο πίνακας (ΠΟΛΛΑ) που είναι ο δεύτερος πίνακας. ΤΗΝ ΣΧΕΣΗ δεν την πειράζεις (ΔΕΝ ΔΙΑΓΡΑΦΕΙΣ ΤΙΣ ΣΧΕΣΕΙΣ) αλλά δεν μπορείς με SQL να διαγράψεις τον πίνακα γονέα αν δεν έχεις σβήσει τις εγγραφές από τον πίνακα ΠΟΛΛΑ.

Την εντολή SQL (DELETE ...) για τις διαγραφές των εγγραφών του πίνακα μπορείς όπου θέλεις να την εισάγεις. Σε Event της φόρμας σε ένα κουμπί στο κλικ του, σε module σε μία συνάρτηση που να την καλείς με κάποιο πλήκτρο F5 πχ. ουσιαστικά το SQL Delete θα είναι ο κώδικας που θα διαγράφει τις εγγραφές σου για κάθε πίνακα όμως θα επαναλαμβάνετε το SQL String.

Φιλικά

Kon73

_________________
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
majuranus


Μέλος από: 01 Μαρ 2006
Βοηθήματα: 1
Μηνύματα: 256+

Περιοχή: Veria
View users profile Visit posters website
ΜήνυμαΣτις: 03 Δεκ 2008 14:36    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Έσβησα όλες τις εγγραφές από όλους τους πίνακες και μου έβγαλε αυτό...



this.JPG
 Description:
 Filesize:  102.65 KB
 Viewed:  202 Time(s)

this.JPG



_________________

Ειδήσεις από όλη την Ελλάδα
kon73
Script Master

Μέλος από: 13 Απρ 2008
Βοηθήματα: 3
Μηνύματα: 224


View users profile Visit posters website
ΜήνυμαΣτις: 03 Δεκ 2008 15:04    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

O Κώδικας που σου έγραψα δεν είναι πλήρες. Κάνει Update μόνο αν οι πίνακες δεν έχουν σχέσεις μεταξύ τους όπως ήδη έχω αναφέρεις. Εδώ προφανώς έχεις σχέσεις και γι'αυτό και σου εμφανίζει αυτό το μήνυμα.

Φιλικά

kon73

_________________
My New Site http://www.MsAccess.gr
Free Access (VBA Code,Tutorials, Mdbs, Eclass, Eshop)
majuranus


Μέλος από: 01 Μαρ 2006
Βοηθήματα: 1
Μηνύματα: 256+

Περιοχή: Veria
View users profile Visit posters website
ΜήνυμαΣτις: 03 Δεκ 2008 15:51    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Αα, οκ..

_________________

Ειδήσεις από όλη την Ελλάδα
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [7 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » SQL και SQL Servers (RDBMS) » MS Access
Τώρα είναι 05 Δεκ 2016 16:30 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos