Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Μετακίνηση σε εγγραφές (ms access)

Îåêßíçóå áðü ôï ìÝëïò KoYkoY. Τελευταία δημοσίευση από το μέλος KoYkoY στις 09-05-2006, 14:44. Υπάρχουν 13 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-04-2006, 14:23 11862

    Crying [:'(] Μετακίνηση σε εγγραφές (ms access)

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

  •  13-04-2006, 14:31 11863 σε απάντηση της 11862

    Απ: Μετακίνηση σε εγγραφές (ms access)

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

    Αφού πριν κάνεις οποιαδήποτε αλλαγή στα δεδομένα σου όλα πάιζουν μία χαρά κατά την γνώμη σου προσπάθησε να επικεντρωθείς στο σημείο όπου κάνεις αυτές τις αλλαγές. Όταν κάνω insert π.χ ποιες γραμμές κώδικα εκτελούνται, έχω κάνει subscribe σε κάποιο event το οποίο με την σειρά του κάνει κάτι; Όλα αυτά παίζουν ρόλο.
  •  13-04-2006, 15:03 11865 σε απάντηση της 11863

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Χμμμμμ...νομίζω πως ανακάλυψα κάτι! Αν αυτό μπορεί να βοηθήσει...
    Όταν επεξεργάζομαι μία εγγραφή ή προσθέτω μία νέα και προσπαθώ να μετακινηθώ σε μία άλλη τότε συμβαίνει το συμβάν BeforeUpdate και ακολουθεί το συμβάν AfterUpdate αλλά δεν ακολουθεί το συμβάν Current. Γιατί άραγε;

  •  13-04-2006, 15:28 11868 σε απάντηση της 11862

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Χαζομάρα ανακάλυψη... αν ακολουθούσε το συμβάν Current τότε φαντάζομαι πως δεν θα είχα το πρόβλημα που έχω...
  •  26-04-2006, 12:05 12120 σε απάντηση της 11862

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Είναι πολύ πιθανό να φταίει ο κώδικας που έχεις κρεμάσει στο AfterUpdate.

    Γράψε λίγο τον κώδικα του Event, μήπως μπορέσουμε να σε βοηθήσουμε περισσότερο.
  •  30-04-2006, 14:04 12221 σε απάντηση της 12120

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Πράγματι μία μεταβλητή στον κώδικα του συμβάντος AfterUpdate κρατούσε τις εγγραφές...
    Όμως εκείνο που προσπαθώ να κάνω είναι το εξής:
    Όταν ο χρήστης πατάει σ' ένα κουμπί πλοήγησης τότε αν υπάρχουν αλλαγές στην φόρμα να αποθηκεύονται και παράλληλα να μετακινείται στην επόμενη ή προηγούμενη ή νέα εγγραφή - όπου δηλαδή θέλει.
    Μέχρι στιγμής αυτό δεν το έχω καταφέρει καθώς όταν ο χρήστης πατάει στο κουμπί που θα τον οδηγήσει σε κάποια άλλη εγγραφή και ενώ η τρέχουσα εγγραφή αποθηκεύεται πρέπει να ξαναπατήσει στο κουμπί για να μετακινηθεί η φόρμα.
    Σημείωση ότι κατα τη διάρκεια των συμβάντων BeforeUpdate, AfterUpdate συμβαίνουν διάφορα runtime errors που τα αποφεύγω με error handling μέχρι να εκτελεστεί όλος ο κώδικας.
    Υποσημείωση μία μεταβλητή διαβάζει ποιο κουμπί έχει πατήσει ο χρήστης.
    Καμμιά ιδέα πάνω σ' αυτό;
  •  30-04-2006, 22:23 12230 σε απάντηση της 12221

    Απ: Μετακίνηση σε εγγραφές (ms access)

     KoYkoY wrote:
    όταν ο χρήστης πατάει στο κουμπί που θα τον οδηγήσει σε κάποια άλλη εγγραφή και ενώ η τρέχουσα εγγραφή αποθηκεύεται πρέπει να ξαναπατήσει στο κουμπί για να μετακινηθεί η φόρμα.
    Υποσημείωση μία μεταβλητή διαβάζει ποιο κουμπί έχει πατήσει ο χρήστης.

    Το πιο πιθανό είναι να μην έχεις τοποθετήσει σωστά τον κώδικά σου στο onClick_event των Button. Λογικά θα πρέπει να γράψεις κάτι σαν:

    private void nextRowButton_Click(object sender, System.EventArgs e)

    {

          this.oleDbDataAdapter1.Update(dataSet11);

          nextRow();

    }

     KoYkoY wrote:
    Σημείωση ότι κατα τη διάρκεια των συμβάντων BeforeUpdate, AfterUpdate συμβαίνουν διάφορα runtime errors που τα αποφεύγω με error handling μέχρι να εκτελεστεί όλος ο κώδικας.

    Τα runtime errors δεν είναι φυσιολογικό να συμβαίνουν. Το error handling δεν είναι για να τα αποφεύγεις, αλλά για να τα διαχειρίζεσαι και να τα διορθώνεις.

    Τι ακριβώς errors γίνονται raise???

  •  01-05-2006, 14:33 12235 σε απάντηση της 12230

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Βασικά ακόμα και τώρα δεν έχω καταλάβει την γενική σχεδίαση της εφαρμογής σου πάνω στο συγκεκριμένο θέμα. Χρησιμοποιείς Dataset; Όταν κάνεις αλλαγές της αποθηκεύεις κατευθείαν στην βάση ή της κρατάς στο Dataset; Όταν ενημερώνεις μία εγγραφή έχεις δει αν το πρόβλημα δημιουργείτε ενημερώνοντας συγκεκριμένο πεδίο της εγγραφής ή δεν πάιζει ρόλο; Μήπως το Dataset έχει σχέσεις μέσα και τα πεδία που ενημερώνεις είναι μέρος μίας σχέσης;

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

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

    Αν δεν τα έχεις παρατήσει ακόμα και εξακολουθεί να σε προβληματίζει το συγκεκριμένο πρόβλημα γράψε σε παρακαλώ πιο λεπτομερειακά για το πρόβλημά σου.
  •  01-05-2006, 22:50 12241 σε απάντηση της 12235

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Καταρχήν σας ευχαριστώ θερμά για την προσπάθεια σας να με βοηθήσετε.

     

    Η βάση δεδομένων που φτιάχνω γίνεται αποκλειστικά στην Access χρησιμοποιώντας VBA (δεν γνωρίζω κάποια άλλη γλώσσα προγραμματισμού έτσι δεν καταλαβαίνω αυτά που ο χρήστης evliatsas αναφέρει).

     

    Γενικώς το περιβάλλον έτσι όπως το έχω σχεδιάσει θέλω να μην δίνει την εντύπωση ότι η Ms Access τρέχει από κάτω. Έτσι σκαρφίζομαι διάφορους τρόπους – ανατρέχοντας φυσικά στη βοήθεια της Access αλλά και στο internet – ώστε να πετύχω τον τελικό μου σκοπό που είναι η βάση δεδομένων να δείχνει περισσότερο σαν ένα ανεξάρτητο πρόγραμμα, αν μπορώ να το θέσω έτσι.  

    Προκειμένου να αποφύγω τα μηνύματα της Microsoft αποφάσισα να φτιάξω τα δικά μου κουμπιά πλοήγησης όμως κολλάω σ’ ένα σωρό λάθη που συμβαίνουν. Αναζήτησα προσαρμοσμένα κουμπιά πλοήγησης στο internet αλλά δυστυχώς δεν κάνουν τη φόρμα μου να λειτουργεί έτσι όπως θέλω.

     

    Φαντάζομαι πως η όλη διαδικασία θα πρέπει να είναι πιο εύκολη απ’ ότι δείχνει αλλά κάτι παραλείπω ή κάτι αγνοώ ή κάνω τελείως λάθος.

     

    Ενδεικτικά παραθέτω μέρος του κώδικα μήπως και μπορέσετε να βγάλετε άκρη.

    Τα λάθη που αποφεύγω μπορεί να μην συμβαίνουν πάντα αλλά κάποτε συνέβησαν και έτσι τα συμπεριλαμβάνω.

    Δυστυχώς δεν μπορώ να σας μιλήσω με όρους προγραμματιστή ώστε να μπείτε γρήγορα στο νόημα.

     

    Private blnNewRecord As Boolean

    Private blnChangedData As Boolean

    Private ctlErrorHandling As Control

    Private blnNoDublicatedRecord  As Boolean

    Private blnChangedIDNumberForExtras As Boolean

    Private blnBeforeUpdateStop As Boolean

    Private strIDNumber As String

    Private strmyOldIDNumberForExtras As String

     

     

    Private Sub Form_Current()

    Call ColorUnActive

    If Me.UnActive = False Then

    Call Pretty

    End If

     

    blnChangedData = False

    blnNewRecord = False

    blnBeforeUpdateStop = False

    Set ctlErrorHandling = Nothing

    blnChangedIDNumberForExtras = False

     

    Me.txtCurrentRecord = Me.Form.CurrentRecord

     

    Me.IDNumber.SetFocus

    strmyOldIDNumberForExtras = Nz(Me.IDNumber)

    strIDNumber = Nz(Me.IDNumber)

    End Sub

     

    Private Sub Form_BeforeInsert(Cancel As Integer)

    blnNewRecord = True

    End Sub

     

    Private Sub Form_Dirty(Cancel As Integer)

    blnChangedData = True

    End Sub

     

    Private Sub Form_BeforeUpdate(Cancel As Integer)

    Me.Field1.SetFocus

    If Me.Field1.Text = "" Then

        MsgBox "Δεν μπορείτε να συνεχίσετε χωρίς να" & Chr(10) & Chr(13) & _

        "να καταχωρήσετε τιμή στο Field1.", vbCritical, "Field1 Xωρίς Τιμή!"

           

            If ctlErrorHandling.Name = "cmbCloseForm" Then

                If blnNewRecord = False Then

                    If MsgBox("Για να σας επιτραπεί να βγείτε από τη φόρμα" & Chr(10) & Chr(13) & _

                    "πρέπει πρώτα να αναιρέσετε τις αλλαγές." & Chr(10) & Chr(13) & _

                    "Είστε σίγουροι ότι θέλετε να αναιρέσετε τι αλλαγές;", _

                    vbCritical + vbYesNo, "Αναίρεση;") = vbYes Then

                        blnChangedData = False

                        blnNewRecord = False

                        DoCmd.RunCommand acCmdUndo

                        DoCmd.Close

                    End If

                Else

                   If MsgBox("Για να σας επιτραπεί να βγείτε από τη φόρμα" & Chr(10) & Chr(13) & _

                    "πρέπει πρώτα να αναιρέσετε τη νέα εγγραφή." & Chr(10) & Chr(13) & _

                    "Είστε σίγουροι ότι θέλετε να αναιρέσετε τη νέα εγγραφή;", _

                    vbCritical + vbYesNo, "Αναίρεση;") = vbYes Then

                        blnChangedData = False

                        blnNewRecord = False

                        DoCmd.RunCommand acCmdUndo

                        DoCmd.Close

                    End If

                End If

            End If

       

        Cancel = True

        blnBeforeUpdateStop = True

        Me.Field1.SetFocus

    Else

            Dim strField1 As String

            Dim strField2 As String

            Dim strField3 As String  

     

            strField1=Trim(Me.Field1.Text)

            Me.Field2.SetFocus

            strField2 = Trim(Me.Field2.Text) 

            Me.Field3.SetFocus

            strField3=Trim(Me.Field3.Text)

     

            If strField3<>"" Then

               strIDNumber = strField1 & strField2 & strField3

            Else

               strIDNumber = strField1 & strField2

            End If

     

            Call CheckForDublicatedRecord

     

            If blnNoDublicatedRecord = False Then

                Cancel = True

                MsgBox "Έχετε ήδη καταχωρήσει το συγκεκριμένο IDNumber" & strIDNumber & Chr(10) & Chr(13) & _

                "Αλλάξτε το Field1 για να συνεχίσετε.", vbCritical, "Διπλότυπη εγγραφή!"

               

                Me.Field1.SetFocus

                Me.Field1.Text=""

                blnBeforeUpdateStop = True

           Else

                Me.IDNumber.SetFocus

                Me.IDNumber.Text = strIDNumber

       

                Me.txtHelpMe.SetFocus

       

                If strmyOldIDNumberForExtras <> "" Then

                   If strmyOldIDNumberForExtras <> strIDNumber Then

                       blnChangedIDNumberForExtras = True

                   End If

                End If

           

                If blnNewRecord = True Then

                   If MsgBox("Θέλετε να αποθηκεύσετε τις αλλαγές;", vbQuestion + vbYesNo, _

                   "Νέα Εγγραφή!") = vbYes Then

                        DoCmd.RunCommand acCmdSaveRecord

                        Me.Recalc

                   Else

                        DoCmd.RunCommand acCmdUndo

                   End If

               Else      

                   If MsgBox("Θέλετε να αποθηκεύσετε τις αλλαγές;", vbQuestion + vbYesNo, _

                   "Τα δεδομένα έχουν αλλάξει!") = vbYes Then

                       DoCmd.RunCommand acCmdSaveRecord

                       Me.Recalc

                   Else

                       DoCmd.RunCommand acCmdUndo

                   End If

               End If

          End If

    End If

     

    Exit_MyUpdateErrorHandling:

        Exit Sub

    Err_MyUpdateErrorHandling:

        Select Case Err.Number

        Case 2115

            Resume Next

        Case 2046

            Resume Next

        Case 2467

            Resume Next

        Case 438

            Resume Next

        Case Else

        MsgBox Err.Description

        Resume Exit_MyUpdateErrorHandling

        End Select

    End Sub

     

    Private Sub Form_AfterUpdate()

     

    On Error GoTo Err_MyAfterUpdateErrorHandling

     

    blnChangedData = False

     

    If blnBeforeUpdateStop = False Then

        Call Pretty

        Call DefineExtrasList

        Call WriteExtrasCount

     

        If blnChangedIDNumberForExtras = True Then

            If IsNull(DLookup("IDNumber", "tblExtras", "IDNumber=""" & _

            strmyOldIDNumberForExtras & """")) = False Then

               Call ChangeIDNumberForExtras

            End If

        End If

     

        Select Case ctlErrorHandling

          Case ctlErrorHandling.Name = "cmbCloseForm"

              DoCmd.Close

          Case ctlErrorHandling.Name = "cmbOpenExtrasForm"

              DoCmd.OpenForm "frmAnalysisExtras", , , "[IDNumber]=""" & Me![IDNumber] & """"

          Case ctlErrorHandling.Name="cmbGoToNextRecord"

              Dim dbs As Database

              Dim rst As Recordset

              Dim lngTotalOfRecords As Long

              Set dbs = CurrentDb

              Set rst = dbs.OpenRecordset("SELECT * FROM tblBasicInfo;")

     

              If rst.BOF = True And rst.EOF = True Then

                 MsgBox "Δεν υπάρχει επόμενη εγγραφή.", vbInformation, "Πρώτη Εγγραφή!"

                 rst.Close

              Else

                 If Not rst.BOF Then

                 rst.MoveFirst

                 End If

                 If Not rst.EOF Then

                 rst.MoveLast

                 End If

                 lngTotalOfRecords = rst.RecordCount

     

                 Dim lngRecord As Long

                 lngRecord = Me.Form.CurrentRecord

     

                 Select Case lngTotalOfRecords

                   Case Is > lngRecord

                     DoCmd.GoToRecord , , acNext

                   Case lngRecord

                     DoCmd.GoToRecord , , acNewRec

                   Case Is < lngRecord

                     MsgBox "Βρισκόσαστε σε μία νέα εγγραφή. Δεν υπάρχει επόμενη.", vbInformation, "Τέλος Εγγραφών!"

                 End Select

                 rst.Close

            End If

       End Select

    End If

     

    Exit_MyAfterUpdateErrorHandling:

        Exit Sub

    Err_MyAfterUpdateErrorHandling:

        Select Case Err.Number

        Case 438

            Resume Next

        Case Else

        MsgBox Err.Description

        Resume Exit_MyAfterUpdateErrorHandling

        End Select

    End Sub

     

    Private Sub cmbGoToNextRecord_Click()

    On Error GoTo Err_CancelMove_Click

     

    Set ctlErrorHandling = Me.cmbGoToNextRecord

     

    If blnChangedData = True Then

        Me.Refresh

    Else

        Dim dbs As Database

        Dim rst As Recordset

        Dim lngTotalOfRecords As Long

     

        Set dbs = CurrentDb

        Set rst = dbs.OpenRecordset("SELECT * FROM tblBasicInfo;")

     

        If rst.BOF = True And rst.EOF = True Then

            MsgBox "Δεν υπάρχει επόμενη εγγραφή.", vbInformation, "Πρώτη Εγγραφή!"

            rst.Close

        Else

            If Not rst.BOF Then

            rst.MoveFirst

            End If

            If Not rst.EOF Then

            rst.MoveLast

            End If

            lngTotalOfRecords = rst.RecordCount

     

            Dim lngRecord As Long

            lngRecord = Me.Form.CurrentRecord

     

            Select Case lngTotalOfRecords

                Case Is > lngRecord

                    DoCmd.GoToRecord , , acNext

                Case lngRecord

                    DoCmd.GoToRecord , , acNewRec

                Case Is < lngRecord

                    MsgBox "Βρισκόσαστε σε μία νέα εγγραφή. Δεν υπάρχει επόμενη.", vbInformation, "Τέλος Εγγραφών!"

            End Select

            rst.Close

        End If

    End If

      

    Exit_CancelMove_Click:

            Exit Sub

     

    Err_CancelMove_Click:

        Select Case Err.Number

        Case 3426

            Resume Next

         Case 3021

            Resume Next

         Case 2465

            Resume Next

         Case 2046

            Resume Next

         Case 2501

            Resume Next

         Case 2115

            Resume Next

         Case 2105

            Resume Next

         Case 2499

            Resume Next

        Case Else

        MsgBox Err.Description

        Resume Exit_CancelMove_Click

        End Select

    End Sub

     

    Error 3426

    This action was cancelled by an associated object.

    Error 3021

    No current record.

    Error 2465

    Η Microsoft Office Access δεν μπορεί να βρει το πεδίο '|' που αναφέρεται μέσα στην έκφρασή σας@Ίσως πληκτρολογήσατε λανθασμένα το όνομα του πεδίου ή το πεδίο έχει μετονομαστεί ή διαγραφεί.@@1@411730@1      

    Error 2046

    Η εντολή ή η ενέργεια '|' δεν είναι διαθέσιμη τώρα.@*  Ίσως η βάση δεδομένων είναι μόνο για ανάγνωση ή προηγούμενης έκδοσης της Microsoft Office Access που δεν έχει μετατραπεί.

    *  Ο τύπος αντικειμένου στον οποίο εφαρμόζεται η ενέργεια δεν έχει επιλεγεί ή δεν υπάρχει στην ενεργό προβολή.@Χρησιμοποιήστε μόνο όσες εντολές και ενέργειες μακροεντολών είναι τώρα διαθέσιμες για αυτή τη βάση δεδομένων.@1@@1

    Error 2501

    Η ενέργεια | ακυρώθηκε.@Χρησιμοποιήσατε κάποια μέθοδο του αντικειμένου DoCmd, για να εκτελέσετε μια ενέργεια στη Visual Basic, αλλά μετά πατήσατε 'Άκυρο' σε κάποιο παράθυρο διαλόγου.

    Για παράδειγμα, χρησιμοποιήσατε τη μέθοδο Close για να κλείσετε μια φόρμα που είχε τροποποιηθεί. Έπειτα, πατήσατε 'Άκυρο' στο παράθυρο διαλόγου που σας 

    Error 2115  

    Η μακροεντολή ή η συνάρτηση που έχει οριστεί στην ιδιότητα BeforeUpdate ή ValidationRule για αυτό το πεδίο, εμποδίζει τη Microsoft Office Access να αποθηκεύσει τα δεδομένα στο πεδίο.@* Εάν πρόκειται για μακροεντολή, ανοίξτε τη στο παράθυρο 'Μακροεντολή' και καταργήστε την ενέργεια που προκαλεί την αποθήκευση (για παράδειγμα, 'Μετάβαση σε στοιχείο ελέγχου').

    * Εάν η μακροεντολή περιλαμβάνει ενέργεια 'Ορισμός τιμής', ορίστε τη μακροεντολή ως τιμή στην ιδιότητα AfterUpdate του στοιχείου ελέγχου.

    * Εάν πρόκειται για μακροεντολή, ορίστε ξανά τη συνάρτηση στο παράθυρο 'Λειτουργική μονάδα'.@@1@@1

    Error 2105   

    Η μακροεντολή ή η συνάρτηση που έχει οριστεί στην ιδιότητα BeforeUpdate ή ValidationRule για αυτό το πεδίο, εμποδίζει τη Microsoft Office Access να αποθηκεύσει τα δεδομένα στο πεδίο.@* Εάν πρόκειται για μακροεντολή, ανοίξτε τη στο παράθυρο 'Μακροεντολή' και καταργήστε την ενέργεια που προκαλεί την αποθήκευση (για παράδειγμα, 'Μετάβαση σε στοιχείο ελέγχου'.

    * Εάν η μακροεντολή περιλαμβάνει ενέργεια 'Ορισμός τιμής', ορίστε τη μακροεντολή ως τιμή στην ιδιότητα AfterUpdate του στοιχείου ελέγχου.

    * Εάν πρόκειται για μακροεντολή, ορίστε ξανά τη συνάρτηση στο παράθυρο 'Λειτουργική μονάδα'.@@1@@1

    Error 2499

     Δεν μπορείτε να χρησιμοποιήσετε την ενέργεια ή τη μέθοδο GoToRecord (Μετάβαση σε εγγραφή) για ένα αντικείμενο σε Προβολή σχεδίασης.@Δοκιμάστε κάτι από τα ακόλουθα:

    * Για φόρμα, μεταβείτε σε Προβολή φόρμας ή φύλλου δεδομένων.

    * Για ερώτημα ή πίνακα, μεταβείτε σε Προβολή φύλλου δεδομένων.

    * Εάν εκτελείτε μακροεντολή ή διαδικασία της

    Error 2467

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

    Error 438

    Object doesn't support this property or method

    Τέλος και τω θεώ δόξα!!Big Smile [:D]

  •  02-05-2006, 09:23 12247 σε απάντηση της 11862

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Να πω οτι έχω δει εφαρμογές όπως αυτό που προσπαθείς να κάνεις (based on Access αλλα να μην φαίνεται).. απο πολύ γνωστή ελληνική εταιρία.. Δεν είναι οτι πιο εύκολο και αν δεν υπάρχει κάποιος συγκεκριμένος λόγος, θα έλεγα να το αποφύγεις..
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  03-05-2006, 09:40 12269 σε απάντηση της 12241

    Απ: Μετακίνηση σε εγγραφές (ms access)

     KoYkoY wrote:

    Η βάση δεδομένων που φτιάχνω γίνεται αποκλειστικά στην Access χρησιμοποιώντας VBA (δεν γνωρίζω κάποια άλλη γλώσσα προγραμματισμού έτσι δεν καταλαβαίνω αυτά που ο χρήστης evliatsas αναφέρει).

     

    Νόμιζα, και λογικό πιστεύω είναι, πως ο κωδικάς σου ήταν σε .NET και πώς από εκεί βλέπεις με ένα Connection την βάση, για αυτό και δεν καταλάβαινες τι έλεγα.

    Τώρα σε ότι αφορά την Access. Άν και δεν είμαι απόλυτα σίγουρος (έλλειψη χρόνου+πολλές γραμμές), δοκίμασε δύο πραγματάκια και δές αν εξακολουθεί να δίνει τα ίδια Errors.

     

    - Set rst = dbs.OpenRecordset("tblBasicInfo", dbOpenDynaset) ' Παρόμοια και για τους άλλους πίνακες.

     

    - Απενεργοποίησε (προσωρινά τουλάχιστον) κάθε έλεγχο για rst.EOF

    H  Access τραβάει ανηφόρες και κολλήματα στον προσδιορισμό του EOF όταν το recordset που σηκώνει έχει Insert Rights (Δυνατότητα προσθήκης).

     

    Δοκίμασέ τα, και πές μας τις διαφορές (if any).

     

     

  •  04-05-2006, 14:02 12303 σε απάντηση της 12269

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Καμμία διαφορά για το συγκεκριμενο πρόβλημα!

    Ώστόσο ακολούθησα τη συμβουλή του evliatsas για το rst και θα ακολουθούσα και την άλλη για το EOF αν μπορούσα με κάποιο τρόπο να υπολογίζω τις πραγματικά αποθηκευμένες εγγραφές του πίνακα. Αλλά πως είναι αυτό δυνατό χωρίς να αγγίξω το τέλος του recordset; (Πάντως το δοκίμασα... αλήθεια λέω..) Έτσι αποφάσισα προκειμένου να μην μπλέκομαι με πολλά EOF και να στεναχωρώ την access αντί να υπολογίζω το σύνολο των εγγραφών στο κουμπί GoToNextRecord ή όπου αλλού,  το υπολογίζω στο συμβάν Current της φόρμας αλλάζοντας τη συγκεκριμένη μεταβλητή σε private. (Ελπίζω κάτι να είναι και αυτό!)

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

     Φίλε pkefal καταλαβαίνω τι λες αλλά πως μπορώ να το αποφύγω αφού μόνο με την access έχω ασχοληθεί; Πάντως δεν είναι και άσχημηStick out tongue [:P]

  •  08-05-2006, 09:20 12378 σε απάντηση της 12303

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Θα τολμήσω να σου κάνω μια πρόταση.

    Αφού χρησιμοποιείς δικές σου ρουτίνες για να το navigation των εγγραφών, τότε θα μπορούσες να τρέξεις όλους τους data integrity ελέγχους σε μια ξεχωριστή ρουτίνα (π.χ Private Sub checkRecordFields() ), την οποία θα εκτελείς πρίν κάνεις DoCmd.GoToRecord.... καθώς και στο close Event της φόρμας.

    Δηλαδή να ξεκρεμάσεις τους ελέγχους από το Before_Update και το After_Update  Event και να τους συμπτύξεις. Νομίζω πως αυτό θα σου δώσει καλύτερο έλεγχο πάνω στον κώδικά σου και θα σε αποτρέψει απ' το να εκτελείς τον ίδιο έλεγχο πάνω από μια φορά.

     

     

  •  09-05-2006, 14:44 12445 σε απάντηση της 12378

    Απ: Μετακίνηση σε εγγραφές (ms access)

    Ο τολμών νικά!!Party!!! [<:o)]

    Πράγματι αυτό έκανα. Αποσυμφόρησα τον κώδικα, κάτι μικροδιορθώσεις με τη σειρά και πρόσθεσα ένα requery. Τώρα φαίνεται να λειτουργεί έτσι όπως το θέλω!.... αν και η απορία μου μένει...

    evliatsas σ' ευχαριστώ πολύ για το χρόνο που αφιέρωσες στο πρόβλημα μουSmile [:)].

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems