Newsgroup: it.comp.www.asp
Titolo: Problemi con ODBC

Salve dopo tanto lavoro ho sviluppato un applicazione che mi permette di
aprire/vedere/modificare dati in DB MS-Access; una sorta di browser via
Web di file MDB ....
Ora però ho la necessità di utilizzare la stessa applicazione per
accedere anche a DB SQL-Server; ed infatti (tralasciando problemi di
prestazioni) se in un DB Access definisco una query che mi va a prendere
dati sul mio ServerSQL ...  tipo:
SELECT * FROM MiaTabella IN '' [ODBC;DRIVER=SQL Server; 
SERVER=APPSRV-CED4;APP=Microsoft® Access;
DATABASE=REPL_UGSD00;TranslationName=Yes;QueryLogFile=Yes;UID=sa;PWD=;];
riesco ad utilizzare da ASP il recordset come se fosse una qualsiasi
tabella ACCESS ma ... questa cosa mi funziona solo su un server NT-iis4
mentre su un altra macchina win2K no; perche????
Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 DATABASE=REPL_UGSD00;TranslationName=Yes;QueryLogFile=Yes;UID=sa;PWD=;];
Mi auguro che ci sia un errore ^____^*
Cmq:
Il recordset va aperto su una connessione esistente.
Recordset e connessione sono due oggetti distinti e separati e sarebbe bene
lasciarli cosi', specie per le query di selezione.
Se il motore di Access e' tanto buono da accettare un mostro simile (la
stringa di connessione nella query... brrr), SQL Server, ne sono certo, non
accetta porcherie simili.
Alura:
1) Crea un oggetto connessione
dim objConn, strConn
strConn = "DRIVER=SQL Server; > SERVER=APPSRV-CED4;APP=Microsoft® Access;
DATABASE=REPL_UGSD00; TranslationName=Yes; QueryLogFile=Yes; UID=sa; PWD=;"
set objConn = server.createobject("ADODB.Connection")
objConn.open
e assicurati che la stringa di connessione sia corretta.
2) Crea un recordset e setta tutte le sue proprieta'
dim objRs
set objRs = server.createobject("ADODB.Recordset")
objRs.cursorType = adOpenDynamic
objRs.lockType = adLockOptimistic
objRs.ActiveConnection = objConn
3) Opzionale: volendo puoi anche creare un oggetto ADODB.COMMAND per gestire
quello che desideri ADO metta nel recordset, ma di solito, trattandosi di
una query SQL, puoi servirti biecamente di una stringa messa nel posto
giusto. Se devi servirti delle stored procedures, invece, ti tocca usare
quest'altro oggetto e, ti assicuro, che si tratta di una rottura di OO di
proporzioni epocali.
4) Finalmente apri il recordset
dim strSql
strSql = "SELECT * FROM miatabella"
objRs.open strSql
Bello eh?
Se poi avessi usato adodb.command avresti dovuto settare objRs.activecommand
objMioComando e invocare objRs.open senza alcun parametro.
Circa il perche' non ti funziona sotto 2000 non saprei che dirti, ma se
quello che hai scritto come query ti funzionava la mia domanda e': come
ca...spita faceva a funzionare?!?
Ciau
Andrea

 DATABASE=REPL_UGSD00;TranslationName=Yes;QueryLogFile=Yes;UID=sa;PWD=;];
Massimiliano,
una mia cliente ha scritto un post sul forum del mio tool a proposito
dell'utilizzo di query che accedono a tabelle su database diversi:
http://www.vbsdb.com/sources/pages/forum/topic.asp?TOPIC_ID=209
io l'ho trovato interessante e secondo me il metodo puo' tornare buono per
risolvere il tuo problema.
Ciao!
--
VBSdb - VBScript for Database
http://www.vbsdb.com
VBSdb is an open source VBScript object for fast ASP development