HTML & Softone

505 views
Skip to first unread message

Olie

unread,
Jan 23, 2009, 6:00:24 AM1/23/09
to Softone Developers Network
Γεία σας και ευχαριστώ εκ τον προτέρων για τον χρόνο σας.
Ενώ όλα είναι μια χαρά με windows εφαρμογές, στην html δεν μπορω να
καταλαβω πως λειτουργεί μια outProcess εφαρμογή.
Με το παράδειγμα το CustomerHTMLOleObject.html κατάφερα να συνδεθώ...
Θέλω όμως να φέρω στην σελίδα και άλλα δεδομένα όπως π.χ. τους πελάτες
αλλα δεν καταλαβαινω το πως.

Προσπαθώ να καταλάβω ποιες είναι οι μέθοδοι του OLE SoXplorer.
Υπάρχουν κάπου καταγεγραμμένοι;

Συγγνώμη για το επίπεδο της ερώτησης, αλλα είναι πολυ σημαντικό να
καταλάβω το πως λειτουργεί.
Και πάλι ευχαριστώ...

JacarandaBill

unread,
Jan 24, 2009, 1:46:34 PM1/24/09
to Softone Developers Network
Στο συγκεκριμένο παράδειγμα φαίνεται ήδη πως δημιουργείς το CUSTOMER
αντικείμενο.
Τα methods που χρειάζεσαι αναφέρονται όλα στο WScript+Methods+and
+Events(07-2008)+.pdf
Message has been deleted

Olie

unread,
Jan 26, 2009, 7:38:10 AM1/26/09
to Softone Developers Network
Ευχαριστω! Δεν μπορεσα ομως να καταλαβω τι κανω λαθος.

Dim xplorer As Object = Server.CreateObject
("SoXplorer.SoConnection")
xplorer.xco = "c:\extra.xco"
xplorer.Login("User", "Pass", 1, 1, Now())
Dim custobj As Object = xplorer.createObj("CUSTOMER")

Μετά τι πρεπει να καλεσω για παρω ενα dataset με του πελατες?

Ακομη και η function loginDate μου πετάει com exception.

Επισης, στον server Monitor οταν σηκωνεται το connection, ο χρήστης
που μου εμφανιζει έχει Login date 30/12/1899, company: 25436, branch:
387...ενοείτε πως οι τιμες αυτες είναι άσχετες απο τις πραγματικές...
Τι στο καλό συμβάινει;

Olie

unread,
Jan 26, 2009, 7:43:45 AM1/26/09
to Softone Developers Network
Επίσης, το object SoXplorer.SoConnection, έχει τουλάχιστον δύο
μεθόδους που δεν αναφέρονται πουθενά παρα μόνο στο παράδειγμα
(object.login, object.xco)

JacarandaBill

unread,
Jan 26, 2009, 8:12:36 AM1/26/09
to Softone Developers Network
* Για το 5ο όρισμα αν θυμάμαι καλά πρέπει να είναι string.
Δοκίμασε να βγάλεις το Now() και βάλε μια σταθερά π.χ. "26/01/2009"

* Για το dataset μπορείς να κάνεις δυο πράγματα:

1. Να "πάρεις" το αντικείμενο που αντιστοιχεί στον πίνακα των πελάτων
και με έναν βρόγχο να προσπελάσεις μια - μια όλες τις εγγραφές. Κάτι
δηλαδή σαν το παρακάτω (δεν ξέρω VB οπότε ας μου συγχωρεθούν τα λάθη):

Dim ATableCustObj
ATableCustObj = custobj.FindTable("CUSTOMER")

while not ATableCustObj.EOF
'
' Εδω κάνεις τα δικά σου
'

ATableCustObj.Next
end while

Aν θέλεις συγκεκριμένη εγγραφή μπορείς να την βρεις με Locate ή
μπορείς και να φιλτράρεις πριν τον βρόγχο με Filter.

2. Μπορείς να πάρεις ένα dataset τρέχωντας ένα SELECT query με την
βοήθεια της GETSQLDATASET. Nομίζω ότι υπάρχουν και παραδείγματα αν
ψάξεις εδώ στο group.

* Για αυτά που παρατηρείς στο connection δεν έχω ιδέα, πάντως και σε
εμάς εδώ σε όλα τα outprocess συμβαίνει το ίδιο πράγμα. Το μόνο που
έχουμε παρατηρήσει σαν πρόβλημα (και που ίσως είναι σχετικό για αυτό
και το αναφέρω) είναι ότι όταν σε κάποιο PC έχουμε σηκωμένο τον S1
Server για να εξυπηρετηθούν κάποια S1 clients μέσω VPN και συμβαίνει
επίσης να έχουμε και ένα outprocess σηκωμένο στο ίδιο PC τότε πολλές
φορές τα S1 clients δεν μπαίνουν στην εταιρία του πελάτη αλλά βγάζουν
σφάλμα grace error/ connection denied. Αν κλείσουμε και ξανατρέξουμε
το S1 Server και το Outprocess το πρόβλημα λύνεται.

Φιλικά,
Βασίλης Σαμαλτάνος

Olie

unread,
Jan 26, 2009, 8:41:44 AM1/26/09
to Softone Developers Network
Βασιλη σ'ευχαριστω και παλι για τον χρονο σου (ειναι πολυτιμος για
ολους μας) :)
Απλά αναφέρω οτι οι functions και οι methods που προανέφερες (και
πολλές άλλες απο το Wscript....pdf)
μού πετάνε exception (είτε οτι δεν υπαρχει instance του object, είτε
comException).
Θα κοιτάξω αν έχει να κάνει με το connection, μιας και ο SO server δεν
μας τα λεει καλα.
...
Ο server ειναι σηκωμένος στο development machine και η βάση βρίσκεται
σε άλλον υπολογιστή στο Lan...
Φαντάζομαι ότι δεν υπάρχει πρόβλημα με αυτο...

JacarandaBill

unread,
Jan 26, 2009, 3:04:55 PM1/26/09
to Softone Developers Network
> μού πετάνε exception (είτε οτι δεν υπαρχει instance του object, είτε
> comException).

Προφανώς πρέπει πρώτα να εντοπίσεις που ξεκινάει το πρόβλημα, με μια
εντελώς στοιχειώδη έκδοση του κώδικα σου χωρίς τα έξτρα για το
CUSTOMER. Yποθέτω ότι έχεις κάνει registered τον S1 COM Server. Ποιο
είναι το πρώτο exception; Είναι στην δημιουργία του
SoXplorer.SoConnection; Αν ναι ίσως αν τυπώσεις το err.number και το
ψάξεις να ανακαλύψεις περισσότερα. Αν είναι στο Login βεβαιώσου ότι
όλες οι παράμετροι είναι σωστές.

> Ο server ειναι σηκωμένος στο development machine και η βάση βρίσκεται
> σε άλλον υπολογιστή στο Lan...

Δεν βλέπω οτι αυτό μπορεί να είναι πρόβλημα αρκεί το .xco που
αναφέρεις στον κώδικα σου να το χρησιμοποιείς χειροκίνητα στο S1 και
να συνδέεσαι κανονικά με αυτό σε κάποια εταιρία.

Olie

unread,
Jan 27, 2009, 7:13:37 AM1/27/09
to Softone Developers Network
Billy, το exception εμφανιζεται οταν καλω καποια μεθοδο αφου έχει
επιτευχθει το connection αλλά όχι σε όλες τις μεθόδους.
Πιστέυω ότι είναι λάθος κλήση των παραμετρων της function.Σε windows
εφαρμογη η getSQLDataset δουλευει ετσι οπως την έχω παρακατω...σε web
σελιδα ομως δεν δουλευει...

Dim xplorer As Object = Server.CreateObject
("SoXplorer.SoConnection")
xplorer.xco = "c:\extra.xco"
xplorer.Login("User", "Pass", 1, 1, Now())
Dim custobj As Object = xplorer.createObj("CUSTOMER")

Dim aTbl as Object=custObj.getSQLDataset("SELECT NAME
FROM TRDR") <---The server threw an exception. (Exception from
HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

JacarandaBill

unread,
Jan 27, 2009, 9:45:07 AM1/27/09
to Softone Developers Network
Olie, υπάρχει και δεύτερη παράμετρος στην getSQLDataset()
Δοκίμασε να θέσεις την δεύτερη παράμετρο ως null ή ''
Eχω την εντύπωση ότι στην VB σου δουλεύει γιατί η VB όταν δεν υπάρχει
μια παράμετρος την περνάει null ούτως ή άλλως.

Επίσης δες και εδώ:
https://groups.google.com/group/soft1/browse_thread/thread/725a22978f8104c3/3cbd26054647dc7d?lnk=gst&q=getSQLDataset#3cbd26054647dc7d

Σχετικά με το SELECT που έγραψες, καλό είναι να ορίζεις και την
εταιρία και το τι είδους εγγραφές θέλεις.
Π.χ. για να πάρεις τους πελάτες από την εταιρία 1 γράφεις:
SELECT * FROM TRDR WHERE COMPANY = 1 AND SODTYPE = 13

Το SODTYPE μπορεί να πάρει τις παρακάτω τιμές:
13 ΠΕΛΑΤΕΣ
12 ΠΡΟΜΗΘΕΥΤΕΣ
15 ΧΡΕΩΣΤΕΣ
16 ΠΙΣΤΩΤΕΣ

Olie

unread,
Jan 27, 2009, 10:20:00 AM1/27/09
to Softone Developers Network
Τελικά το λάθος ήταν στην σύνταξη της εντολής...
Ευχαριστώ για τις διευκρινήσεις και για τον χρονο σου.
Υπάρχει κάποια function που να επιστρέφει την τιμή ενός πεδίου του
dataset που να δέχεται σαν παράμετρο το όνομα του πεδίου και όχι το
index του;

vag...@gmail.com

unread,
Jan 28, 2009, 2:41:29 AM1/28/09
to Softone Developers Network
Να επανέλθω πάλι στο HTML
Εμένα με αυτό τον κώδικα επιστρέφει:
Line:15
Char: 5
Error: The server threw an exception
Code:0

Σε πρώτη φάση που βρισκεται το λάθος;
Σε 2η δεν μπορεί να είναι πιο κατατοπιστικό το μύνημα λάθους;\
3ον Στην 5η παράμετρο βάζουμε string ή μπορούμε και μεταβλητή πχ now
() ;

Ευχαριστώ

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
var xplorer, MAT_WHOUSE, CDIM_AX;

function start(){
try
{
xplorer = GetActiveOleObject("SoXplorer.SoConnection");
}
catch( E )
{
xplorer = new ActiveXObject("SoXplorer.SoConnection");
xplorer.xco = "C:\\SOFTONE\\τεστ1.XCO";
xplorer.Login("Admin","1234567",1,999,"28/01/2009");
}
}
function matfunction (jobname)
{
var s1;
s1=xplorer.exec("OPENJOB",jobname);
}
</SCRIPT>
</HEAD>
<BODY onload="start()">
<p>
<span lang="el"><a href="javascript:matfunction
('MAT_WHOUSE')">Υπόλοιπα ειδών ανα Αποθ. Χώρο</a></span></td>
</p>
<p>
<span lang="el"><a href="javascript:matfunction('CDIM_AX')">Υπόλοιπα
ειδών ανα Χρώμα Μέγεθος και Αποθ. Χώρο</a></span></td>
</p>
</BODY>
</HTML>

Olie

unread,
Jan 28, 2009, 7:39:44 AM1/28/09
to Softone Developers Network
Δοκίμασε να αλλάξεις τις ρυθμίσεις του debugging γενικα, για να
βλέπεις περισσότερες πληροφορίες για τα λάθη.
Το όρισμα στην 5ή παράμετρο είναι τύπου Date. Καί οι δύο εκδοχές σου
είναι σώστές.

Πάντως, εάν τρέξεις την html σελίδα (σαν αρχείο) και όχι να την κάνεις
debug, δουλέυει κανονίκα, τουλάχιστον σε εμένα. (ΙΕ7)

vagelis dermos

unread,
Jan 28, 2009, 8:00:36 AM1/28/09
to so...@googlegroups.com
Τώρα μου βάζεις δύσκολα.
Τι εννοείς να αλλάξω στο debugging;
Κάποιο παράδειγμα;

Olie

unread,
Jan 28, 2009, 9:22:28 AM1/28/09
to Softone Developers Network
Σε τι περιβάλλον γράφεις τον κωδικα σου;

vagelis dermos

unread,
Jan 28, 2009, 10:01:45 AM1/28/09
to so...@googlegroups.com
Σε Notepad!!!
Αν αυτό εννοείς
Αλλωστε δεν θέλω και κάτι τρομερό
H βάση είναι Oracle αν αυτό βοηθάει

Olie

unread,
Jan 28, 2009, 10:33:22 AM1/28/09
to Softone Developers Network
Ειχα παραβλεψει αυτο το ενδεχομενο :)
Δεν μπορεις να κανεις και πολλα...
Μονο εαν πας στις ρυθμίσεις του browser σου μπορεις να ενεργοποιήσεις
καποιες επιλογές σχετικα με το debuging.
Εαν ψάξεις λιγο είμαι σιγουρος οτι θα βρεις, αλλα μην περιμενεις και
πολλα πραγματα...
Εαν βρείς καποιά επεξήγηση σχετικα με το exception, ενημερωσε μηπως
μπορεσω να βοηθησω

Vagelis Dermos

unread,
May 26, 2009, 7:18:35 AM5/26/09
to so...@googlegroups.com
Γεια σας
Θέλω να φτιάξω μια σελίδα HTML
Έχω δημιουργήσει μια function που θα γυρίζει το υπόλοιπο του πελάτη.
Από ότι έχω καταλάβει η εντολή που πρέπει να στείλω για να φύγει το sql
είναι η xplorer.exec.
Έτσι συντάσσεται;
Γιατί μου γυρνάει undefined
Ευχαριστώ


function Ypol()
{
var myForm;
myForm=document.form;

var r1;
var t1="RunSql(/'SELECT ISNULL(B.LBAL,0) AS ypol FROM TRDR A LEFT OUTER
JOIN TRDFINDATA B ON A.TRDR=B.TRDR WHERE A.COMPANY=1 AND A.SODTYPE=13 AND
A.CODE like /'%";
var t2 = t1 + myForm.textcode.value;
var t3 = t2 + "/%'";
var t4 = "/',/'/')";
var s1 = t3 + t4;
r1=xplorer.exec("OPENJOB", s1);
alert(s1);
return r1.ypol;
}

JohnG

unread,
May 27, 2009, 3:04:32 AM5/27/09
to Softone Developers Network
Τη ακριβός θέλεις να κάνεις, :
1. να ανοίξεις μια web page μέσω web server
2. να φτιάξεις μια web page και να την ανοίξεις μέσα από το πρόγραμμα
3. να φτιάξεις μια web page που θα ανοίγει το πρόγραμμα.

Για κάθε περίπτωση υπάρχει και διαφορετική αρχικοποίηση.

Υ.Γ.

Αυτό που έχεις γράψει δεν έχει κανένα νόημα, η xplorer.exec("OPENJOB",
<jobName>) ανοίγει την εργασία με όνομα <jobName> και λειτουργεί μόνο
στην 3 περίπτωση. Σε καμία περίπτωση δεν εκτελεί SQL.

Vagelis Dermos

unread,
May 27, 2009, 3:33:11 AM5/27/09
to so...@googlegroups.com
Βασικά θέλω να ανοίγω μια html σελίδα και να παίρνω διάφορες πληροφορίες.
Ο τρόπος 1,2,3 που θα γίνει αυτό δεν με απασχολεί αρκεί να γίνετε σωστά, αν
και πιστεύω πως ο 1ος και ο 3ος τρόπος είναι αυτοί που θα ασχοληθώ
περισσότερο.

Ευχαριστώ

Giannis Giorgoulakis

unread,
May 27, 2009, 3:36:07 AM5/27/09
to so...@googlegroups.com
Δες τα σχετικά παραδείγματα τώτe, για παράδειγμα για τον πρώτο τρόπο δες το  REST.


2009/5/27 Vagelis Dermos <vag...@gmail.com>
Reply all
Reply to author
Forward
0 new messages