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



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

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


Search Engine Optimization by vBSEO 3.3.2