Page 1 of 1

accesso a database SQL

Posted: Mon Feb 16, 2009 3:05 pm
by damianodec
Ad un server con SQL accedevo tramite ODBC con l'istruzione
oOdbc := TOdbc():New( cDSN, cName, cPass )
e mi tiravo la mia query con:
oDbf := oOdbc:Query(.....)

il responsabile del server dopo un aggiornamento non riesce ad attivare più l'ODBC, di conseguenza non funziona più la mi a procedura.
C'è qualche altro modo per accedervi?
grazie

Re: accesso a database SQL

Posted: Mon Feb 16, 2009 6:44 pm
by Enrico Maria Giordano
Sì, via ADO:

Code: Select all

#define adOpenForwardOnly 0
#define adOpenKeyset      1
#define adOpenDynamic     2
#define adOpenStatic      3

#define adLockReadOnly        1
#define adLockPessimistic     2
#define adLockOptimistic      3
#define adLockBatchOptimistic 4


FUNCTION MAIN()

    LOCAL oRs := CREATEOBJECT( "ADODB.Recordset" )

    oRs:Open( "SELECT * FROM Clienti ORDER BY Cliente", "Dsn=Clienti;Uid=Userid;Pwd=Password", adOpenForwardOnly, adLockOptimistic )

    WHILE !oRs:EOF
        ? oRs:FIELDS( "Cliente" ):Value
        oRs:MoveNext()
    ENDDO

    oRs:Close()

    RETURN NIL
EMG

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 8:06 am
by damianodec
provo, ma mi da l'errore:

Error description: Error ADODB.Recordset/6 DISP_E_UNKNOWNNAME: OPEN
Called from: win32ole.prg => TOLEAUTO:OPEN(0)

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 8:16 am
by Enrico Maria Giordano
Naturalmente devi mettere il tuo DSN con i corretti userid e password.

EMG

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 8:25 am
by damianodec
HO FATTO:

#define adOpenForwardOnly 0
#define adOpenKeyset 1
#define adOpenDynamic 2
#define adOpenStatic 3

#define adLockReadOnly 1
#define adLockPessimistic 2
#define adLockOptimistic 3
#define adLockBatchOptimistic 4
local cDsn := "cDsn"
Local cName := "cName"
Local cPass := "cPass"
LOCAL oRs := CREATEOBJECT( "ADODB.Recordset" )

oRs:Open( " Select t0.Name, T5.condpag, t0.address, t0.zipcode, t0.fax, t0.city, t0.county "+ ;
"from CLIENTI t0 INNER JOIN CLIENTI1 T5 "+ ;
"ON T0.KEY = T5.KEY where T0.NAME = 'NOME CLIENTE'", ;
"Dsn=CDsn;Uid=cCname;Pwd=cPass", adOpenForwardOnly, adLockOptimistic )

naturalmente in cDsn c'è il nome del database in cname l'userid e in cpass la password

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 8:42 am
by Enrico Maria Giordano
Per favore, visualizza la seguente stringa e ti renderai conto dell'errore:

? "Dsn=CDsn;Uid=cCname;Pwd=cPass"

EMG

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 9:05 am
by damianodec
il secondo parametro come errore è:
[ 2] = C Dsn=nomeDB;Uid=utente;Pwd=password

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 9:16 am
by Enrico Maria Giordano
???

EMG

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 9:19 am
by damianodec
posso inviarti l'esempio via email?

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 9:21 am
by Enrico Maria Giordano
Ok.

EMG

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 10:06 am
by Enrico Maria Giordano
Ho visto. Se sei assolutamente certo che sia la query (SELECT etc.) sia Dsn, Uid e Pwd siano corretti allora temo che il database non sia proprio accessibile.

EMG

Re: accesso a database SQL

Posted: Tue Feb 17, 2009 11:32 am
by damianodec
la query è quella che andava bene con l'ODBC e Dsn Uid e Pwd son quelli.... sigh!