Προσπαθώ να καταλάβω ποιες είναι οι μέθοδοι του OLE SoXplorer.
Υπάρχουν κάπου καταγεγραμμένοι;
Συγγνώμη για το επίπεδο της ερώτησης, αλλα είναι πολυ σημαντικό να
καταλάβω το πως λειτουργεί.
Και πάλι ευχαριστώ...
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...ενοείτε πως οι τιμες αυτες είναι άσχετες απο τις πραγματικές...
Τι στο καλό συμβάινει;
* Για το 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 το πρόβλημα λύνεται.
Φιλικά,
Βασίλης Σαμαλτάνος
Προφανώς πρέπει πρώτα να εντοπίσεις που ξεκινάει το πρόβλημα, με μια
εντελώς στοιχειώδη έκδοση του κώδικα σου χωρίς τα έξτρα για το
CUSTOMER. Yποθέτω ότι έχεις κάνει registered τον S1 COM Server. Ποιο
είναι το πρώτο exception; Είναι στην δημιουργία του
SoXplorer.SoConnection; Αν ναι ίσως αν τυπώσεις το err.number και το
ψάξεις να ανακαλύψεις περισσότερα. Αν είναι στο Login βεβαιώσου ότι
όλες οι παράμετροι είναι σωστές.
> Ο server ειναι σηκωμένος στο development machine και η βάση βρίσκεται
> σε άλλον υπολογιστή στο Lan...
Δεν βλέπω οτι αυτό μπορεί να είναι πρόβλημα αρκεί το .xco που
αναφέρεις στον κώδικα σου να το χρησιμοποιείς χειροκίνητα στο S1 και
να συνδέεσαι κανονικά με αυτό σε κάποια εταιρία.
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))
Επίσης δες και εδώ:
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 ΠΙΣΤΩΤΕΣ
Σε πρώτη φάση που βρισκεται το λάθος;
Σε 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>
Πάντως, εάν τρέξεις την html σελίδα (σαν αρχείο) και όχι να την κάνεις
debug, δουλέυει κανονίκα, τουλάχιστον σε εμένα. (ΙΕ7)
Για κάθε περίπτωση υπάρχει και διαφορετική αρχικοποίηση.
Υ.Γ.
Αυτό που έχεις γράψει δεν έχει κανένα νόημα, η xplorer.exec("OPENJOB",
<jobName>) ανοίγει την εργασία με όνομα <jobName> και λειτουργεί μόνο
στην 3 περίπτωση. Σε καμία περίπτωση δεν εκτελεί SQL.