Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Πρόβλημα με κώδικα σε πεδίο
Καλησπέρα στην παρέα, Προσπαθώ να δημιουργήσω την υποδομή έτσι ώστε να μπορώ να αντιγράφω τα δεδομένα απο ένα Record σε ένα νέο, και αντιμετωπίζω πρόβλημα με το πεδίο [Notes] επειδή το format του είναι Memo. Σημειώστε ότι ο κώδικας και η όλη διαδικασία δουλεύει εάν ακυρώσω την γραμμή κώδικα που αφορά το συγκεκριμένο πεδίο Παραθέτω αυτούσιο τον κώδικα έτσι ώστε να μπορέσω να γίνω πιο κατανοητός: Private Sub cmdDublicateRec_Click() On Error GoTo Err_cmdDublicateRec_Click Dim lngID As Long, dbs As DAO.Database Dim lngDietType As Long Dim lngNewDietID As Long Dim lngBreakfastMeals As Long Dim lngSnack1Meals As Long Dim lngLunchMeals As Long Dim lngSnack2Meals As Long Dim lngDinnerMeals As Long Dim lngNightMeals As Long Dim lngBefSleepMeals As Long Dim lngNotes As Long (εδώ είναι το πρόβλημα διότι πιστεύω πως δεν πρέπει να έχω As Long αλλά κάτι άλλο εφόσον το πεδίο αυτό είναι Memo) If Not Me.NewRecord Then lngID = Me.DietID lngDietType = Me.DietType lngBreakfastMeals = Me.BreakfastMeals lngSnack1Meals = Me.Snack1Meals lngLunchMeals = Me.LunchMeals lngSnack2Meals = Me.Snack2Meals lngDinnerMeals = Me.DinnerMeals lngNightMeals = Me.NightMeals lngBefSleepMeals = Me.BefSleepMeals lngNotes = Me.Notes Set dbs = CurrentDb With Me.RecordsetClone .AddNew ![Customer No] = Me.txtCustomer !DietType = lngDietType !BreakfastMeals = lngBreakfastMeals !Snack1Meals = lngSnack1Meals !LunchMeals = lngLunchMeals !Snack2Meals = lngSnack2Meals !DinnerMeals = lngDinnerMeals !NightMeals = lngNightMeals !BefSleepMeals = lngBefSleepMeals !Notes = lngNotes lngNewDietID = !DietID .Update .FindFirst ("DietID=" & lngNewDietID) If Not .NoMatch Then Me.Bookmark = .Bookmark End With Αισιοδοξώ προς θα μπορέσει κάποιος πιο έμπειρος φίλος στο φόρουμ να με βοηθήσει και ευχαριστώ εκ προτέρων. Φιλικά |
#2
| |||
| |||
Καλημέρα και χρόνια πολλά. Γιώργο, θα σου πρότεινα να δημιουργήσεις μια νέα ΒΔ. Να προσθέσεις τη φόρμα με τον προβληματικό κώδικα και τα εντελώς απαραίτητα (πίνακες, ερωτήματα) για τη σωστή λειτουργία της φόρμας και να την ανεβάσεις στο φόρουμ. Έτσι θα διευκόλυνες όσους θέλουν να βοηθήσουν και πιθανόν να έλυνες το πρόβλημά σου. Φιλικά/Γιώργος |
#3
| |||
| |||
Καλημέρα, Χρόνια σου Πολλά Γιώργο μου....πάντα γερός..!! Γιώργο έχεις δίκιο στην αναφορά σου περί Upload μιας βάσης που να περιλαμβάνει όλα τα σχετικά αλλά αρκετα δύσκολο έως ανέφικτο εξαιτίας ότι για να μπορεί κάποιος να δουλέψει με το σχετικό κομμάτι του σημείου που είναι ενσωματωμένος ο κώδικας, πρέπει δυστυχώς να "ξεσηκωσω" πάνω απο την μισή βάση... Θα με βοηθούσε έστω μια διαφώτηση στο εξής; 1. εάν πεδίο είναι Memo τι βαζουμε στο .......As......? (πχ As Long - Byte - ??) 2. Εάν μπορώ ίσως να ανατρέξω σε κάποιο βιβλίο - ιστοσελίδα ή οτιδήποτε επιμορφωτικό υλικό έτσι ώστε να πάρω και να μελετήσω την πιο πάνω απορία.. Σε ευχαριστώ για το ενδιαφέρον Γιώργο, συνήθως όταν και εφόσον χρειάζομαι κάποια βοήθεια φροντίζω και ανεβάζω κάποιο "παράδειγμα - βάση" έτσι ώστε να μπορεί κάποιος να αντιληφθεί τι χρειάζομαι. Δυστυχώς στην προκυμένη περίπτωση είναι σχεδόν αδύνατο να γίνει κάτι ανάλογο φίλε.. Ευχαριστώ |
#4
|
Καλημέρα Εντελώς τυχαία, διάβασα το ζητούμενό σου. Επειδή το Note, είναι δεσμευμένη λέξη, (keyword) θα ήταν καλό, να αλλάξεις με κάτι παρόμοιο, πχ Info Κάνε και το memo as String Δοκίμασε τον κώδικα, μήπως και γλυτώσεις τις φασαρίες. Χωρίς να γνωρίζω το έργο σου, αν οι μεταβλητές (γενικά) είναι αριθμητικά πεδία, ακέραιοι, και έχουν να κάνουν με ποσότητες γευμάτων (από την ονομασία) ίσως και το Long είναι υπερβολικό. Επιφυλάσσομαι της απάντησής μου, επειδή δεν γνωρίζω όπως είπα το έργο σου. |
#5
| |||
| |||
Γειά σου Σπύρο και ευχαριστώ για την βοήθεια, Ωστόσο, έχω τροποποιήσει τον κώδικα όπως εισηγείσαι αλλά εντούτις λαμβάνω error msg (το οποίο επισυνάπτω). Έχω δηλαδή κάνει το πιο κάτω: Private Sub cmdDublicateRec_Click() On Error GoTo Err_cmdDublicateRec_Click Dim lngID As Long, dbs As DAO.Database Dim lngDietType As Long Dim lngNewDietID As Long Dim lngBreakfastMeals As Long Dim lngSnack1Meals As Long Dim lngLunchMeals As Long Dim lngSnack2Meals As Long Dim lngDinnerMeals As Long Dim lngNightMeals As Long Dim lngBefSleepMeals As Long Dim lngDietCalories As Single Dim lngCarbs As Single Dim lngProtein As Single Dim lngFat As Single Dim IngInfo As String Dim lngbrTime As Single Dim lngbrTimeÔï As Single Dim lngBrSnTime As Single Dim lngBrSnTimeÔï As Single Dim lngLunTime As Single Dim lngLunTimeÔï As Single Dim lngAftTime As Single Dim lngAftTimeÔï As Single Dim lngDinTime As Single Dim lngDinTimeÔï As Single Dim lngNightTime As Single Dim lngNightTimeÔï As Single Dim lngDrnkTime As Single Dim lngDrnkTimeÔï As Single If Not Me.NewRecord Then lngID = Me.DietID lngDietType = Me.DietType lngBreakfastMeals = Me.BreakfastMeals lngSnack1Meals = Me.Snack1Meals lngLunchMeals = Me.LunchMeals lngSnack2Meals = Me.Snack2Meals lngDinnerMeals = Me.DinnerMeals lngNightMeals = Me.NightMeals lngBefSleepMeals = Me.BefSleepMeals lngbrTime = Me.brTime lngbrTimeÔï = Me.brTimeÔï lngBrSnTime = Me.BrSnTime lngBrSnTimeÔï = Me.BrSnTimeÔï lngLunTime = Me.LunTime lngLunTimeÔï = Me.LunTimeÔï lngAftTime = Me.AftTime lngAftTimeÔï = Me.AftTimeÔï lngDinTime = Me.DinTime lngDinTimeÔï = Me.DinTimeÔï lngNightTime = Me.NightTime lngNightTimeÔï = Me.NightTimeÔï lngDrnkTime = Me.DrnkTime lngDrnkTimeÔï = Me.DrnkTimeÔï lngDietCalories = Me.DietCalories lngCarbs = Me.pCarbs lngProtein = Me.pProtein lngFat = Me.pFat IngInfo = Me.Notes Set dbs = CurrentDb With Me.RecordsetClone .AddNew ![Customer No] = Me.txtCustomer !DietType = lngDietType !BreakfastMeals = lngBreakfastMeals !Snack1Meals = lngSnack1Meals !LunchMeals = lngLunchMeals !Snack2Meals = lngSnack2Meals !DinnerMeals = lngDinnerMeals !NightMeals = lngNightMeals !BefSleepMeals = lngBefSleepMeals !brTime = lngbrTime !brTimeÔï = lngbrTimeÔï !BrSnTime = lngBrSnTime !BrSnTimeÔï = lngBrSnTimeÔï !LunTime = lngLunTime !LunTimeÔï = lngLunTimeÔï !AftTime = lngAftTime !AftTimeÔï = lngAftTimeÔï !DinTime = lngDinTime !DinTimeÔï = lngDinTimeÔï !NightTime = lngNightTime !NightTimeÔï = lngNightTimeÔï !DrnkTime = lngDrnkTime !DrnkTimeÔï = lngDrnkTimeÔï !DietCalories = lngDietCalories !pCarbs = lngCarbs !pProtein = lngProtein !pFat = lngFat !Notes = IngInfo lngNewDietID = !DietID .Update .FindFirst ("DietID=" & lngNewDietID) If Not .NoMatch Then Me.Bookmark = .Bookmark End With Κάθε βοήθεια είναι σημαντική. Ευχαριστώ πολύ |
#6
| |||
| |||
Σπύρο χαιρετώ και πάλι, Στην προσπάθεια μου να βρώ λύση στον κώδικα, εντόπισα οτι η βάση μου δυστυχώς για κάποιο λόγο έγινε corrupt και έτσιμ αφενώς μέν 1) άνοιξα μια νέα access 2) έριξα όλα τα αντικείμενα μέσα 3) προσάρμωσα τον κώδικα όπως ακριβώς μου έχεις εισηγηθεί.....και φυσικά ΔΟΥΛΕΥΕΙ μια χαρά..!! Φίλε μπορεί εντελώς τυχαία να είδες την ανάρτηση μου αλλά μάλλον θεόσταλτος θα ήσουν..! Σε ευχαριστώ άλλη μια φορά. Καλή συνέχεια |
#7
| |||
| |||
Εκείνο που δεν κατάλαβα στον κώδικά σου (γι' αυτό ζήτησα και το δείγμα) είναι γιατί δεν θέτεις κατευθείαν τις τιμές των πεδίων του πίνακα ίσες με τις τιμές των πεδίων της φόρμας. Έτσι ο κώδικας θα περιορίζονταν στο μισό και οι μεταβλητές που σου δημιοργούν το πρόβλημα δε θα χρειάζονταν. |
#8
| |||
| |||
Καλησπέρα Γιώργο και σε όλη την παρέα Γιώργο οι γνώσεις μου είναι πολύ περιορισμένες σε vba, αν θές και έχεις την καλοσύνη μπορείς να μου δείξεις στον κώδικα μου τί ακριβώς εννοείστ Νάσαι καλά |
#9
| |||
| |||
Αντί: lngDietType = Me.DietType !DietType = lngDietType Θα μπορούσες να γράψεις (είνα απλά μαθηματικά): !DietType = Me.DietType Έτσι θα καταργούσες την εντολή lngDietType = Me.DietType και τη δήλωση της μεταβλητής lngDietType, δηλαδή το μεγαλύτερο μέρος του κώδικα. |
#10
| |||
| |||
Γιώργο γειά σου, Δηλαδή να μπορούσε ο κώδικας να δουλέψει έτσι? Private Sub cmdDublicateRec_Click() On Error GoTo Err_cmdDublicateRec_Clicκ Set dbs = CurrentDb With Me.RecordsetClone .AddNew ![Customer No] = Me.txtCustomer !DietType = lngDietType !BreakfastMeals = lngBreakfastMeals !Snack1Meals = lngSnack1Meals !LunchMeals = lngLunchMeals !Snack2Meals = lngSnack2Meals !DinnerMeals = lngDinnerMeals !NightMeals = lngNightMeals !BefSleepMeals = lngBefSleepMeals !brTime = brTime !brTimeÔï = brTimeÔï !BrSnTime = BrSnTime !BrSnTimeÔï = BrSnTimeÔï !LunTime = LunTime !LunTimeÔï = LunTimeÔï !AftTime = AftTime !AftTimeÔï = AftTimeÔï !DinTime = DinTime !DinTimeÔï = DinTimeÔï !NightTime = NightTime !NightTimeÔï =NightTimeÔï !DrnkTime = DrnkTime !DrnkTimeÔï = DrnkTimeÔï !DietCalories = DietCalories !pCarbs = Carbs !pProtein = Protein !pFat = Fat !Notes = Info lngNewDietID = !DietID .Update .FindFirst ("DietID=" & lngNewDietID) If Not .NoMatch Then Me.Bookmark = .Bookmark End With Φιλικά, |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[VBA] Πρόβλημα σε κώδικα | xristos | Excel - Ερωτήσεις / Απαντήσεις | 5 | 16-03-16 18:43 |
Πρόβλημα σε κώδικα vba | ΑΛΕΞΙΑ | Access - Ερωτήσεις / Απαντήσεις | 1 | 12-10-15 17:05 |
[ Συναρτήσεις ] ΠΡΟΒΛΗΜΑ ΚΩΔΙΚΑ ΣΕ ΑΝΑΖΗΤΗΣΗ | artchrist73 | Access - Ερωτήσεις / Απαντήσεις | 2 | 16-10-14 23:44 |
Πρόβλημα με κώδικα VBA | γιώργοςΚ | Access - Ερωτήσεις / Απαντήσεις | 17 | 08-10-14 17:04 |
Πρόβλημα σε κώδικα | jimrenoir | Access - Ερωτήσεις / Απαντήσεις | 2 | 10-05-11 15:50 |
Η ώρα είναι 21:14.