Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Ερωτήματα ] Τι κάνω λάθος (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/3648-ti-kano-lathos.html)

anestaki 19-04-15 21:05

Τι κάνω λάθος
 
Καλησπέρα σε όλους και Χρίστος ανέστη
Στον παρακάτω κώδικα τι κανό λάθος και στο error μου εμφανίζει λίγοι παράμετροι αναμένεται μια.
Κώδικας:

Dim node
node = DLookup("struser", "tblEmployees", "lngEmpID=" & Form_frmLogon.cboEmployee)
Set Rst = CurrentDb.OpenRecordset("SELECT * FROM MenuNodesQuery WHERE node = TRUE")


anestaki 20-04-15 19:09

Καμιά βοήθεια ……….!

kapetang 20-04-15 19:50

Καλησπέρα

Γιώργο τα στοιχεία που δίνεις είναι ανεπαρκή.

Δε μας λες σε ποια γραμμή του κώδικα παρουσιάζεται το λάθος, ούτε μας δίνεις τα ονόματα των πινάκων/ερωτημάτων μαζί με τα ονόματα και τον τύπο των πεδίων που εμπλέκονται στον κώδικα.

Στην τελευταία γραμμή του κώδικα το node τι είναι;

Φιλικά/Γιώργος

anestaki 20-04-15 20:26

Καλησπέρα Γιώργο
Στον παρακάτω κώδικα με το node αναζητάμε το όνομα του χρηστή και στο ερώτημα MenuNodesQuery του μενού μας εμφανίζει τα δικαιώματα του.
Και αυτό για να αφαιρέσω την If Form_Frm_main.Usr = "1" Then και να έχω περισσότερες επιλογές.
Θα ήθελα να ανεβάσω της βάσης αλλά η μια με τους πινάκες είναι 3,24 ΜΒ και η άλλη 10,1 ΜΒ και δεν γνωρίζω άλλο τρόπο για να την δείτε.
Κώδικας:

Sub AddNodes()
'-----------------
    Dim myTree As Control
    Dim myImage As Control
    Dim db As DAO.Database
    Dim Rst As DAO.Recordset
    Dim strRelative As String
    Dim strKey As String
    Dim strText As String
    Dim strImage As String
    Dim strExpandedImage As String
  Dim node As Variant
    Set myTree = Me.TreeView1
    Set myImage = Me.ImageList1
    ' clear all nodes
    myTree.Nodes.Clear
    ' link Treeview object to Imagelist object
    myTree.ImageList = myImage.Object
    Set db = CurrentDb
    node = DLookup("struser", "tblEmployees", "lngEmpID=" & Form_frmLogon.cboEmployee)
  If Form_frmLogon.cboEmployee = "1" Then
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM MenuNodesQuery WHERE noteAdmin = TRUE")
    Else
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM MenuNodesQuery WHERE noteUsers = TRUE")
    End If

    With Rst
      If Not (.EOF And .BOF) Then
        Do Until .EOF
            If Len(Nz(.Fields("nodeParent"), "")) = 0 Then
              strKey = .Fields("nodeKey")
              strText = .Fields("nodeText")
              strImage = Nz(.Fields("nodePictureNormal"), "")
              myTree.Nodes.Add , , strKey, strText, strImage
            Else
              strRelative = .Fields("nodeParent")
              strKey = .Fields("nodeKey")
              strText = .Fields("nodeText")
              strImage = Nz(.Fields("nodePictureNormal"), "")
              strExpandedImage = Nz(.Fields("nodePictureExpanded"), "")
              'assume the first 4 fields will always have a value, but
              'strExpandedImage might have no value
           
              If strExpandedImage = "" Then
                  myTree.Nodes.Add strRelative, tvwChild, strKey, strText, _
                    strImage
                Else
                  myTree.Nodes.Add strRelative, tvwChild, strKey, strText, _
                    strImage, strExpandedImage
                End If
           
              'set value of nodes.tag property, if it is used (Note: nodes.image
              'and nodes.expandedImage properties only return values, and thus
              'cannot be used this way to set the values.)
           
              If Len(.Fields("nodeTag") & "") > 0 Then
                  myTree.Nodes(strKey).Tag = .Fields("nodeTag")
              End If
            End If
            .MoveNext
        Loop
      End If
  End With
 
  Rst.Close
 
  Set db = Nothing
  Set Rst = Nothing
   
End Sub


kapetang 21-04-15 16:29

Καλησπέρα

Γιώργο, αν κατάλαβα το λαβύρινθο που μου έστειλες, αυτό που θέλεις δε γίνεται:

1) Η γραμμή κώδικα:
node = DLookup("struser", "tblEmployees", "lngEmpID=" & Form_frmLogon.cboEmployee), θα δώσει στη μεταβλητή node μια τιμή από το πεδίο strUser (noteUser1 ή noteUsers).

2) Αλλά, επειδή στο ερώτημα MenuNodesQuery δεν υπάρχει πεδίο ανάλογο με το struser η παραπάνω τιμή της μεταβλητής node δεν μπορεί να χρησιμοποιηθεί στα κριτήρια, όταν ανοίγουμε το recordset Rst.

Φιλικά/Γιώργος

anestaki 21-04-15 16:49

Καλησπέρα σε όλους
Γιώργο παρόλο που άλλαξα τα πεδία σε noteUsers1 και noteUsers9 και πάλι δεν βλέπει το node στο ερώτημα.:icon_choc:

kapetang 21-04-15 18:41

Καλησπέρα

Γιώργο, για να βάλουμε μια σειρά:

1) Οι τιμές που θα παίρνει το πεδίο strUser στον πίνακα tblEmployees θα πρέπει να είναι πεδία τύπου yes/Νο στον πίνακα MenuNodes και στο αντίστοιχο ερώτημα MenuNodesQuery.

Τονίζω ιδιαίτερα ότι τα ονόματα των πεδίων yes/No θα πρέπει να ταυτίζονται με τις τιμές του πεδίου strUser.

2) Αφού γίνουν οι παραπάνω αλλαγές θα μπορούσες να ανοίξεις το recordset με την πρόταση:

Set Rst = CurrentDb.OpenRecordset("SELECT * FROM MenuNodesQuery WHERE [" & node & "] =-1")

Φιλικά/Γιώργος

anestaki 21-04-15 21:38

Γιώργο σε ευχαριστώ πολύ.
Άλλαξα τα ονόματα στα πεδία του πινάκα MenuNodes σε noteUsers" & Me.lngEmpID και στην MenuNodesQuery και με την προσθήκη " & node & " δουλεύει άψογα.
Έχω ακόμη μια ερώτηση με τιs παρακάτω γραμμές κανό προσθήκη μια στήλη κάθε φορά που εγγράφετε ένας χριστείς αλλά δεν είναι Yes/no.
Κώδικας:

Set db = CurrentDb()
Set tdf = db.TableDefs("MenuNodes")
Set fld = tdf.CreateField("noteUsers" & Me.lngEmpID, dbBoolean)
fld.DefaultValue = True
tdf.Fields.Append fld


kapetang 21-04-15 23:18

1 Συνημμένο(α)
Γιώργο ο κώδικας είναι σωστός.

Δες μια δοκιμή στη συνημμένη ΒΔ

anestaki 22-04-15 14:36

Το βρήκα:plaf:
Και πάλι σε ευχαριστώ πολύ.
Κώδικας:

Dim dbs As Object
Dim tdf As TableDef
Dim p As Property
Set dbs = CurrentDb
Set tdf = dbs.TableDefs("MenuNodes")
tdf.Fields.Append tdf.CreateField("noteUsers" & Me.txtInt, dbBoolean)
Set p = tdf.Fields("noteUsers" & Me.txtInt).CreateProperty("DisplayControl", dbInteger, 106)
tdf.Fields("noteUsers" & Me.txtInt).Properties.Append p


kapetang 22-04-15 15:24

Γιώργο, με τον αρχικό κώδικα τα πεδία ήταν τύπου Yes/No, αλλά δεν εμφάνιζαν το βολικό τετραγωνάκι (CheckBox).

Τον κώδικα που ανέβασες θα μπορούσες να τον διαμορφώσεις και ως εξής:

Κώδικας:

Private Sub cmdAppend_Click()
    Dim dbs As dao.Database
    Dim tdf As dao.TableDef
    Dim fld As dao.Field
    Dim p As dao.Property
   
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("MenuNodes")
    Set fld = tdf.CreateField("noteUsers" & Me.txtInt, dbBoolean)
    fld.DefaultValue = True
    tdf.Fields.Append fld
    Set p = fld.CreateProperty("DisplayControl", dbInteger, 106)
    fld.Properties.Append p
End Sub


anestaki 22-04-15 19:00

Καλησπέρα σε όλους
Γιώργο για ακόμη μια φορά πιο σωστός:icon_superman:
Τώρα μήπως γνωρίζεις πως μπορούμε να ενημερώνουμε την MenuNodesQuery μόλις προστίθεται μια στήλη στον πινάκα MenuNodes γιατί αυτά είναι βαθιά νερά για έμενα.
Κώδικας:

SELECT MenuNodes.nodeParent, MenuNodes.nodeKey, MenuNodes.nodeText,
MenuNodes.nodePictureNormal, MenuNodes.nodePictureExpanded,
MenuNodes.nodeTag, MenuNodes.noteUsers1, MenuNodes.noteUsers9, MenuNodes.noteUsers12
FROM MenuNodes
ORDER BY MenuNodes.nodeKey;


kapetang 22-04-15 23:42

1 Συνημμένο(α)
Καλησπέρα

Γιώργο, δες ένα παράδειγμα στη συνημμένη ΒΔ

anestaki 23-04-15 12:58

Καλημέρα Γιώργο και χρόνια μας πολλά:drinks:
Βλέπω ότι το ξενυχτάς έμενα η δουλεία μου δεν μου επιτρέπει ξενύχτια και δεν μπόρεσα να δω το ποστ.
Τελικά ο λαβύρινθος γίνεται ακόμη πιο δαιδαλώδης και όπως φαίνεται είσαι η μονή βοήθεια που έχω σε αυτόν.
Μη ξέροντας αγγλικά και με το Google δεν καταλαβαίνω και πολλά.
Σε ευχαριστώ ακόμη μια φορά.

anestaki 25-04-15 16:01

Καλησπέρα σε όλους
Συνεχίζω να κανό λάθος
Ενώ διαγράφω από των πινάκα δεν μπορώ από το ερώτημα.:oeo:
Κώδικας:

Dim del As String
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String
    Set dbs = CurrentDb
    Set qdf = dbs.QueryDefs("MenuNodesQuery")
    strSQL = qdf.Fields.Delete(Me.txtInt2)
  DoCmd.RunSQL strSQL
  del = "ALTER TABLE [MenuNodes] DROP COLUMN [" & Me.txtInt2 & "]"
  DoCmd.RunSQL del


anestaki 25-04-15 16:37

1 Συνημμένο(α)
:oooops:Ξέχασα το συνημμένο

kapetang 25-04-15 19:06

1 Συνημμένο(α)
Καλησπέρα

Γιώργο, παρατήρησα ότι, αν εξαιρέσουμε την ταξινόμηση, ο πίνακας [MenuNodes] και το ερώτημα [MenuNodesQuery] εμφανίζουν τα ίδια στοιχεία.

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

Δες τη συνημμένη ΒΔ.

anestaki 25-04-15 19:40

Καλησπέρα Γιώργο
Δημιούργησα ένα νέο ερώτημα MenuNodesQuery όπως έγραψες και η φόρμα main δεν ανοίγει.:too_angry:

anestaki 25-04-15 19:50

Γιώργο συγγνώμη δουλεύει κανονικά:fryingpan:


Η ώρα είναι 03:19.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2