Απορίες σχετικά με τη σχεδίαση φόρμας

255 views
Skip to first unread message

Μάνος

unread,
Jul 10, 2025, 4:17:19 AM7/10/25
to Softone Developers Network
Καλημέρα,  έχω κάποιες ερωτήσεις σχετικά με τη σχεδίαση μίας φόρμας που δεν μπορώ να λύσω μέσω του Blackbook.
  1. Θέλω να έχω δύο dropdowns όπου ο χρήστης θα διαλέγει υποκατάστημα. Αν φτιάξω 2 fields όπου και στα δύο βάλω για όνομα SRVCARD.BRANCH, τότε αυτά τα δύο πεδία θα συνδέονται, δηλ. όταν θα αλλάζω το ένα θα αλλάζει και το άλλο, πως γίνεται να είναι ξεχωριστά. 
  2. Θέλω σε ένα dropdown οι επιλογές που θα εμφανίζει να είναι οι σειρές ενός custom πίνακα (έστω CCCMYTABLE).  
    1. Τι κάνω: Βάζω τον  CCCMYTABLE (Παραμετροποίηση -> Οριζόμενοι πίνακες -> Προσθήκη πίνακα) στη φόρμα μου και στη συνέχεια προσθέτω ένα πεδίο στη φόρμα και του δίνω το όνομα  CCCMYTABL.PRJC. Όμως  έτσι το πεδίο μου αντί να γίνει dropdown είναι ένα απλό input text κουτί. Λογικά κάτι μου λείπει σχετικά με το Editor κάπου αλλά δεν ξέρω τι να κάνω.
  3. Θέλω να φτιάξω ένα dropdown όπου για επιλογές θα έχει τις σειρές ενός πίνακα όμως φιλτραρισμένες βάση μίας στήλης του, π.χ where TRDR = 1111.
    1. Τι κάνω: Βάζοντας στο Editor που πίνακα: PRJC(W[ TRDR =1111]) μου βγάζει σφάλμα όταν πάω να ανοίξω το dropdown: [S] Ole Error: 80040E14. Ambiguous colum name TRDR
  4. Παρόμοιο με το από πάνω όμως θέλω να βγάλω όλα τα implicit φίλτρα που μπορεί να έχει ο πίνακας και να βάλω δικά μου. Ένα τέτοιο φίλτρο που βάζει μόνο του είναι η εταιρεία, όπου φιλτράρει βάση την εταιρεία login.

    Υποπτεύομαι ότι και τα 4 είναι παρόμοια μεταξύ τους, όμως προσπαθώ να μάθω το S1 και να "προσανατολιστώ" αλλά δυστυχώς το Blackbook δεν το κάνει εύκολο.

    Σας ευχαριστώ για οποιαδήποτε απάντηση
         

    Fotini Batzoni

    unread,
    Jul 10, 2025, 6:16:13 AM7/10/25
    to so...@googlegroups.com
    Καλησπέρα Μάνο,

    αν καταλαβαίνω σωστά θες να σχεδιάσεις μια προβολή(Form)  και όχι μια φόρμα εκτύπωσης.

    1. Όταν χρησιμοποιείς δύο πεδία με ίδιο Field Name (π.χ.  SRVCARD.BRANCH  ), τότε αυτά τα δύο πεδία μοιράζονται το ίδιο dataset, άρα όποια αλλαγή κάνεις στο ένα, θα επηρεάσει και το άλλο.  
        Αν θες να βάλεις υποκατάστημα θα βάλεις EDITOR το BRANCH στα πεδία που θέλεις ωστε με dropdown να έρχονται τα υποκαταστήματα.
        Αν θες δυο ανεξαρτητα dropdowns θα πρέπει να έχεις 2 διαφορετικά Field Names.

    2. Στην προβολή θα βάλεις EDITOR  CCCMYΤABLE στο πεδίο που θες.
     Για να σου εμφανίσει τις στηλες που θες και να βλέπεις στον S1 Designer στο τελευταίο
      tab Πεδία Επιλογέα θα βάλεις τα πεδια που θες να σου εμφανίζονται και δίπλα το μέγεθος που θες να έχει το καθένα πχ το PRJC 

    3.Όταν γράφεις φίλτρο σε EDITOR με W[] θα πρέπει να χρησιμοποιείς τον σωστό alias του πίνακα.
     Το error σου σημαίνει πως δεν έχεις δηλώσει σε ποιο πίνακα ανήκει το TRDR.
      Για να διορθώσεις τον EDITOR θα πρεπει να τρέξεις τον SQL MONITOR και να βρεις τον alias του πινακα πχ TRDR
      αν  ειναι πχ C τοτε στον EDITOR θα γράψεις  PRJC(W[ C.TRDR =1111]).
     

    4.Δυστυχώς δεν ξέρω πως να βγάλεις τα default φίλτρα. Σ αυτό δεν μπορώ να σε βοηθήσω.

    Ελπίζω να τα εξήγησα κατανοητά και να μην σε μπερδεψα παραπάνω.

    Καλή συνέχεια!

    Μάνος

    unread,
    Jul 11, 2025, 4:03:18 AM7/11/25
    to Softone Developers Network
    Ευχαριστώ πολύ, έλυσα αρκετές απορίες και άρχισα να καταλαβαίνω λίγο τον γενικότερο τρόπο λειτουργίας κάποιων πραγμάτων.

    Μάνος

    unread,
    Jul 11, 2025, 4:20:43 AM7/11/25
    to Softone Developers Network
    Έκανα μία ερώτηση σε ένα άλλο thread που ήταν παρόμοιο όμως για κάποιο λόγω διαγράφτηκε οπότε την κάνω εδώ για να μην ανοίγω νέο θέμα:

    Θέλω να φτιάξω ένα dropdown όπου οι σειρές του να γεμίζουν δυναμικά από τον JS Editor.
    Έχω φτιάξει έναν άδειο virtual table (π.χ. CCCMYTABLEVIRTUAL) με 3 στήλες και τον έχω βάλει σαν πεδίο στον FINDOC.
    Στη φόρμα φτιάχνω ένα πεδίο (π.χ. SRVCARD. CCCMYTABLEVIRTUAL) και του βάζω ως editor το CCCMYTABLEVIRTUAL .

    Στο JS Editor έχω:


    var ds = X.GETSQLDATASET(my_query,null);
    ds.FIRST;
    while (!ds.EOF()){
          CCCMYTABLEVIRTUAL.APPEND;
          CCCMYTABLEVIRTUAL.COL1 = 1111;
          CCCMYTABLEVIRTUAL.COL2 = 2222;
          CCCMYTABLEVIRTUAL.COL3 = 3333;
          ds.NEXT;

    }
    Όμως δε φαίνεται να γεμίζει ο virtual πίνακας, το dropdown παραμένει άδειο.

    Sotirios Milios

    unread,
    Jul 11, 2025, 5:23:54 AM7/11/25
    to so...@googlegroups.com
    Δοκίμασε να κάνεις και POST

    --
    Softone Developers Network group.
    To post to this group, send email to so...@googlegroups.com
    ---
    Λάβατε αυτό το μήνυμα επειδή έχετε εγγραφεί στην ομάδα "Softone Developers Network" των Ομάδων Google.
    Για να απεγγραφείτε απ' αυτή την ομάδα και να σταματήσετε να λαμβάνετε μηνύματα ηλεκτρονικού ταχυδρομείου απ' αυτή, στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση soft1+un...@googlegroups.com.
    Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/a3a36082-a0f6-4f82-ba3c-7e14d80ab49an%40googlegroups.com.
    Message has been deleted
    Message has been deleted
    Message has been deleted

    Μάνος

    unread,
    Jul 11, 2025, 6:38:39 AM7/11/25
    to Softone Developers Network
    όντως το ξέχασα, αλλά το έβαλα και δεν άλλαξε κάτι.

    Fotini Batzoni

    unread,
    Jul 11, 2025, 6:49:41 AM7/11/25
    to so...@googlegroups.com
    Καλησπέρα ,

    νομίζω θα ήταν καλύτερα να χρησιμοποιησεις Database View  και οχι Virtual Table για να γεμίζεις ένα dropdown δυναμικά.

    Τα virtual tables είναι πολύ χρήσιμα για να γεμίζεις grids.

    Φτιάξε ένα Database View καλύτερα για dropdown και βάλτο ΕDITOR στο πεδίο που θέλεις .

    Καλή συνέχεια!

    Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/c37aeef6-71b4-4b3b-9ae9-37446a7e0373n%40googlegroups.com.

    Μάνος

    unread,
    Jul 11, 2025, 8:35:15 AM7/11/25
    to Softone Developers Network
    Με Database View κατάφερα να φέρω ένα dropdown όντως, όμως φέρνει τις σειρές όπως ορίζονται στον ορισμό του Database view, δηλαδή στην Καρτέλα SQL όπου έβαλα: SELECT col1, col2, col3 FROM some_table. Όμως ακόμα δεν επηρεάζεται από το παραπάνω σκριπτάκι από το JS.

    Αρκεί το:
    CCCMYTABLEVIEW.APPEND;
    CCCMYTABLEVIEW.COL1 = 1111;

    ή πρέπει να το κάνω locate κάπως;

    Fotini Batzoni

    unread,
    Jul 11, 2025, 8:57:01 AM7/11/25
    to so...@googlegroups.com
    Οταν χρησιμοποιεις Database View αντι να γράψεις το sql query  στο script  θα το κάνεις  στον ορισμό του Database view.
    var ds = X.GETSQLDATASET(my_query,null);
    Το my_query θα το γράψεις στο Database View και το script δεν θα το χρειάζεσαι πλέον.
    Το dropdown θα γεμίζει με τα αποτελέσματα του Database View.

    Αν θέλεις τα αποτελέσματα του Database  View να φιλτράρονται δυναμικά ανά εγγραφή 
    π.χ. ανάλογα με τον πελάτη ή το παραστατικό), τότε πρέπει να χρησιμοποιήσεις 
    στο Locate Statement το TRDR ή το FINDOC
    (ανάλογα την ανάγκη σου)

    Καλή συνέχεια

    Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/ec05f351-531b-4cb4-9744-77c9dbd54bc2n%40googlegroups.com.

    Μάνος

    unread,
    Jul 14, 2025, 3:48:00 AM7/14/25
    to Softone Developers Network
    Καλημέρα,
    καταρχήν, ευχαριστώ πολύ για τη βοήθεια και την υπομονή, αλλά δεν μπορώ να το κάνω να λειτουργήσει. Όταν πατάω να ανοίξει το dropdown μου βγάζει το παρακάτω σφάλμα:
    [S]: Ole Error: 80040E37. Invalid object name 'CCCMYTESTVIEW'. Έχω ξεμείνει από ιδέες και συνδυασμούς.


    Τι κάνω:
    1. Φτιάχνω DatabaseView στη βάση με το όνομα CCCMYTESTVIEW με 
      1. Στήλες: prjc, name, code, company
      2. Primary key: prjc 
      3. Χωρίς SQL
      4. Πεδία επιλογέα: CODE, NAME, COMPANY
    2. Προσθέτω στήλη στον πίνακα FINDOC με το όνομα CCCMYTESTFIELD και editor CCCMYTESTVIEW (έχω δοκιμάσει να αφήσω κενό το editor και να τον βάζω από το JS αλλά δεν).
    3. Στην σχεδίαση της φόρμας:
      1. Προσθέτω τον πίνακα  CCCMYTESTVIEW (παραμετροποίηση -> Οριζόμενοι πίνακες)
      2. Προσθέτω field σε ένα Panel με όνομα: SRVCARD. CCCMYTESTFIELD
      3. Προσθήκη του παρακάτω script (παραμετροποίηση -> Script):
    function ON_SRVCARD_PRJC(){ //Έχω δοκιμάσει και ON_INSERT()
            var my_query = ".....";
            var ds = X.GETSQLDATASET('my_query', null);
            try{
                    ds.FIRST;
                    while (!ds.EOF()){
                            CCCMYTESTVIEW.APPEND;
                            CCCMYTESTVIEW.PRJC = ds.;
                            CCCMYTESTVIEW.CODE = "11111";
                            CCCMYTESTVIEW.NAME = "AAAAAAAA";
                            CCCMYTESTVIEW.COMPANY = 2;
                          CCCMYTESTVIEW.POST;
                            ds.NEXT;                
                    }
            } catch(e){
                    X.WARNING(e.message);
            } finally{
                    //Το έχω κάνει και comment και uncomment αλλά δε φαίνεται να κάνει διαφορά
                    //X.SETPROPERTY('FIELD', 'SRVCARD.CCCMYTESTFIELD', 'EDITOR', 'CCCMYTESTVIEW')
            }
    }


    Δεν μπορώ να καταλάβω που είναι το λάθος αν και υποπτεύομαι στην JS.
    Παρεμπιπτόντως το query δουλεύει μια χαρά. Μήπως πρέπει κάπως να ''βρω'' πρώτα τον πίνακα  CCCMYTESTVIEW και μετά να τον αδειάσω και μετά να τον γεμίσω;

    Fotini Batzoni

    unread,
    Jul 14, 2025, 5:05:57 AM7/14/25
    to so...@googlegroups.com

    Καλημέρα και πάλι!

    Απ’ ό,τι καταλαβαίνω, το σφάλμα σου εμφανίζεται επειδή στον ορισμό του Database View CCCMYVIEWTABLE έχεις αφήσει κενό το SQL στo tab "SQL".
     Αυτό σημαίνει ότι το View δεν δημιουργείται ποτέ στον SQL Server, και γι’ αυτό το dropdown κρασάρει με Invalid Object Name

    Για να λειτουργήσει σωστά:

    1. Πήγαινε στον ορισμό του CCCMYTESTVIEW (στο S1 Designer)

    2. Συμπλήρωσε το SQL που θες να φέρνει δηλαδή το my_query που έχεις στο script σου

      Καταχώρισε το view και κάνε συγχρονισμό
    3. Μην το γεμίζεις με JavaScript – το View γεμίζει αυτόματα με βάση το SQL και το Locate Statement (αν έχεις βάλει).

    Αν το SQL σου δουλεύει στο SQL Server Management Studio, τότε θα δουλέψει και εδώ.

    Δοκίμασέ το έτσι και θα λειτουργήσει το dropdown σου κανονικά.

    Καλή συνέχεια!


    Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/3fcdb085-67e5-48b9-9b9a-c2ebdec02b2dn%40googlegroups.com.

    Μάνος

    unread,
    Jul 14, 2025, 5:28:24 AM7/14/25
    to Softone Developers Network
    Αν βάλω script στο tab SQL στην κατασκευή του CCCMYTESTVIEW τότε όντως θα μου φέρει dropdown όμως ξαναγυρνάμε εκεί που ήμουν 3 μηνύματα πάνω, όπου τελικά τα προβλήματα που έχω είναι 2:
    1. Αυτό δεν είναι dynamic. Εγώ για παράδειγμα θέλω στη φόρμα μου όταν επιλέγει ο χρήστης ένα έργο (ή ένα άλλο field) να αλλάζει η λίστα του dropdown με τους τρόπους που θέλω εγώ (που δεν είναι απαραίτητα ένα απλό φίλτρο), οπότε θέλω οπωσδήποτε να το γεμίζω από JS για να έχω την ελευθερία.
    2. Αν το Database View είναι ''γεμισμένο'' από πριν, για να το φέρει στην φόρμα βάζει τα implicit φίλτρα του S1 (όπως "where A.COMPANY = 100", "A.ISACTIVE = 1") όμως εγώ θέλω να φέρνω ότι θέλω από τη βάση μου, γι αυτό και θέλω JS.

    Μάνος

    unread,
    Jul 15, 2025, 3:12:13 AM7/15/25
    to Softone Developers Network
    Επίσης, ακόμα και αν πάω με τη μέθοδο του Datbase View όπου του βάζω ένα SQL κατά τον ορισμό του (καρτέλα SQL) απ'ότι βλέπω δεν μπορώ να βάλω στο sql script μεταβλητές όπως :X.SYS.COMPANY για να φέρω τις σειρές που θέλω κάθε φορά

    Fotini Batzoni

    unread,
    Jul 15, 2025, 6:05:23 AM7/15/25
    to so...@googlegroups.com
    Τοτε νομιζω το dropdown δεν είναι η σωστή λύση.
    Ισως να σκεφτεις να το κάνεις με κάποιο grid.



    Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/2174500a-5bbb-4785-9b32-2d1a88f82e9cn%40googlegroups.com.
    Reply all
    Reply to author
    Forward
    0 new messages