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

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

Κώδικας VBA - Access


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


Μέλος από: 21 Νοε 2008
Μηνύματα: 13
Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 08 Δεκ 2008 19:32    Θέμα: Κώδικας VBA - Access
Περιγραφή θέματος: Διαγραφή τρέχουσας εγγραφής
Απάντηση με παράθεση  Mark this post and the followings unread

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

Ασχολήθηκα με το ζήτημα της διαγραφής της τρέχουσας εγγραφής σε φόρμα και ως αποτέλεσμα σας παραδίνω δυο ομάδες εντολών-κώδικες
Ο Πρώτος Τρόπος - ΔΟΥΛΕΥΕΙ!

Private Sub Εντολή12_Click()

DoCmd.SetWarnings False ' Απενεργοποίηση του γνωστού μηνύματος της Access
If Me.NewRecord = True Then Exit Sub ' Αντίδραση ρουτίνας αν η νέα εγγραφή ειναι η τρέχουσα
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True 'ενεργοποίηση του μηνύματος ...
End Sub

Ο Δεύτερος Τρόπος - ΔΕΝ ΔΟΥΛΕΥΕΙ !

Private Sub Εντολή13_Click()
Dim strSQL As String
Dim fla As Integer
fla = [id] ' id = το πρωτεύον κλειδί (αυτόματη αρίθμηση)
strSQL = "Delete * From t2 where [id] like fla" 't2 = πίνακας
DoCmd.RunSQL strSQL
MsgBox "Διεγράφει!", vbInformation, "Πράξη διαγραφής"
End Sub

Καθώς εκτελείται ο κώδικας, η Access ζητά την τιμή της παραμέτρου fla. Το περίεργο ειναι οτι την διαβάζει και την ...ξέρει.(παράθυρο immediate)

Παρακαλώ θερμά, όποιος φίλος (-η) έχει γνώση - διάθεση και χρόνο ας βοηθήσει. Εκ των προτέρων ευχαριστώ.

Με εκτίμηση σε όλους σας
Meteora
kon73
Script Master

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


View users profile Visit posters website
ΜήνυμαΣτις: 08 Δεκ 2008 21:55    Θέμα: Re: Κώδικας VBA - Access
Περιγραφή θέματος: Διαγραφή τρέχουσας εγγραφής
Απάντηση με παράθεση  Mark this post and the followings unread

κώδικας:

       strSQL = "Delete * From t2 where  [id] like fla"                   
       DoCmd.RunSQL strSQL

Αλλάζεις το strSQL = "Delete * From t2 where [id] like fla"
με strSQL = "Delete * From t2 where "& [id] & " like fla"

Και λογικά θα σου δουλέψει. Δηλαδή για να δει το String την μεταβλητή που έχει το ID και όχι καθευτού την τιμή [ID] σπάμε το string και το προσθέτουμε πάλι με το Like Fla.

Φιλικά


kon73

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

Μέλος από: 16 Σεπ 2005
Μηνύματα: 256+

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

Tο like δουλεύει με strings και όχι με αριθμούς.
Αφού το id (ή όποιο είναι το primary key) είναι αριθμός και η τιμή που θα έχεις είναι μόνο μία και θέλεις να σβήσεις την τρέχουσα εγγραφή η καλύτερη επιλογή είναι το =.

Δοκίμασε λοιπόν κάτι του στύλ
κώδικας:
strSQL = "Delete * From t2 where [id] = " & CStr(fla)
DoCmd.RunSQL strSQL
Meteora


Μέλος από: 21 Νοε 2008
Μηνύματα: 13
Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 09 Δεκ 2008 10:01    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Καλημέρα φίλοι μου

...Σας ευχαριστώ και τους δυο, για τη καταλυτική σας συμμετοχή εδώ και όχι μόνο...εδώ! (Δηλαδή ...παντού!)

Τελικά ο κώδικας δουλεύει με την παρακάτω μορφή :

Private Sub Εντολή14_Click()

DoCmd.SetWarnings False
Dim strSQL As String
Dim fla As Integer
fla = [id]
strSQL = "Delete * From t2 where [id]= " & CStr(fla)
DoCmd.RunSQL strSQL
Me.Requery
MsgBox "Διεγράφει !", vbInformation, "Πράξη διαγραφής"
DoCmd.SetWarnings True
End Sub

Όπως φαίνεται υπάρχουν οι εξής -πρόσθετες- παρατηρήσεις
(α) Απαιτείται το δίδυμο των εντολών που απενεργοποιούν και ενεργοποιούν την εξ' ορισμού προειδοποίηση της Access σε περιπτώσεις διαγραφής.
(β) Κρίνεται απαραίτητη η εντολή me.Requery, η οποία ενημερώνει την φόρμα απο την πηγή των δεδομένων της
Φυσικά πιστεύω οτι μπορούν να γίνουν και άλλες βελτιώσεις.

Θερμά ευχαριστώ τους δυο φίλους

Με εκτίμηση

Meteora
kon73
Script Master

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


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

Βασικό μου λάθος

Το strSQL = "Delete * From t2 where "& [id] & " like fla"
γίνεται σε
strSQL = "Delete * From t2 where [id] like " & fla
Καθότι το fla είναι η μεταβλητή. Δικό μου λάθος.
Όσο για το Like συνηθίζεται για string όμως δουλεύει και για αριθμούς απλά για αριθμούς το Like ισοδυναμεί με =
Το Like σε string δίνει αυτό που έχει η μεταβλητή fla (Αν ήταν string) και όσα ID εμπεριέχουν το Fla αν δωθεί με "Like *" & FLA & "*" να ξεκινάει "Like *" & FLA ή να τελειώνει "Like " & FLA & "*" . Όλα αυτά για Strings.
Σε αριθμούς δίνει μόνο όσα είναι επακριβώς δηλαδή σαν το = και όχι να εμπεριέχουν το Fla.

Φιλικά

Kon73

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


Μέλος από: 21 Νοε 2008
Μηνύματα: 13
Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 09 Δεκ 2008 16:38    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Πράγματι Kon73! με την αλλαγή σε :

strSQL = "Delete * From t2 where [id] like " & fla , όλα ειναι εντάξει

Ευχαριστώ. Καλό απόγευμα.

Με εκτίμηση

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


Σχετικά θέματα
 Θέματα   Απ/σεις   Αποστολέας   Τελευταίο μήνυμα 
Δημιουργία Βάσης Δεδομένων MS Access με αντιστοιχιση σε γραφικό στοιχείο 1 Charalampos77 22 Ιουλ 2016 13:22
cordis Εμφάνιση τελευταίου μηνύματος
 
Τώρα είναι 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