Newsgroup: it.comp.lang.visual-basic
Titolo: ACTIVEX - connesione su rete tcp/ip su ODBC

Salve a tutti
sto cercando di costruire un ActiveX da caricare con IE4.x che attinge dati
da una fonte ODBC (MDB) su di un altro pc.
Come motore utilizzo  OLEDB Acive Data Object 1.0 ed in locale (si intende
che sia la fonte dati ODBC che IE4.x con ActiveX girano sulla stessa
macchina) funziona tutto benissimo; il problema mi si crea quando richiamo
la pagina html da un IE4.x in rete: viene caricato correttamente l'ActiveX,
viene visualizzato corettamente ma ho un errore di sistema. L'errore
consiste nel fatto che l'Activex tenta di aprire la connessione per la fonte
dati sul pc in rete da cui ho eseguito la chiamata html.
Qualcuno sa come devo impostare la conn.Open?
            Dim conn     As ADODB.Connection
            Dim rst      As ADODB.Recordset
            Set conn = New ADODB.Connection
            Set rst = New ADODB.Recordset
            conn.Open "c2030", "WebUser", "" ' Apri la tabella allarmi
            SQL = "SELECT * FROM lavoro" ' Seleziona i campi della tabella
allarmi
            rst.Open SQL, conn, adOpenKeyset, adLockOptimistic
Grazie in anticipo
Luca


Per fare quello che dici non devi creare un ActiveX control ma una pagina attiva (.ASP). Infatti il primo viene scaricato ed eseguito sul client, mentre la seconda viene eseguita sul server (NTServer+IIS) ed il risultato viene inviato al client.
Puoi comunque continuare ad utilizzare l'ado, l'unica differenza (se poi ti servono ulteriori chiarimenti fatti sentire...) e che la dichiarazione delle variabili non si fa e la creazione degli oggetti e':
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
Ciao
Riccardo

            rst.Open SQL, conn, adOpenKeyset, adLockOptimistic
Prova ad utilizzare una funzione di questo tipo ogni volta che ti serve la
connessione:
'---------------------------------------------------------------------------
-------'
Private Function GetDBConnection as ADODB.Connection
Dim adcnnGetDBConnection As ADODB.Connection
Dim strCnnDB As String
    On Error GoTo GetDBConnection_err
        'Stringa di connessione al server (SQL SERVER ??)
        strCnnDB = "driver={SQL Server}"
        strCnnDB = strCnnDB & ";server=" & NOME_SERVER
'(come è identificato il PC in rete)
        strCnnDB = strCnnDB & ";database=" & NOME_DATABASE         '(come si
chiama il DB su ODBC)
        strCnnDB = strCnnDB & ";uid=" & User_Name
'Username
        strCnnDB = strCnnDB & ";pwd=" & Password
'Password
        Set adcnnGetDBConnection = New ADODB.Connection
        With adcnnGetDBConnection
            .Provider = "MSDASQL"
            .ConnectionString = strCnnDB
            .ConnectionTimeout = CONNECTION_TIMEOUT
            .CursorLocation = adUseNone
            .Open
        End With
        Set GetDBConnection = adcnnGetDBConnection
    On Error GoTo 0
    Exit Function
GetDBConnection_Err:
                'put here some debug code...
End Function
'---------------------------------------------------------------------------
-------'
la puoi chiamare così:
----------------------------------------------------------------------------
-----------------------
Dim adrcsRecordset As ADODB.recordset
Dim adcmdSelect As ADODB.Command
    'Inizializza il comando ADO ad un tipo TestoSQL
    Set adcmdSelect = New ADODB.Command
     With adcmdSelect
        .ActiveConnection = GetDBConnection                 'ottiene la
connessione.
        .CommandText = STRINGA_SQL                             'è la tua
stringa sql...
        .CommandType = adCmdText
        .CommandTimeout = COMMAND_TIMEOUT         'costante per il
Timeout...
    End With
    'Inizializza il Recordset
    Set adrcsRecordset = New ADODB.Recordset
    'Lo apre...
    adrcsRecordset .CursorLocation = adUseClient
    adrcsRecordset .Open adcmdSelect, , adOpenForwardOnly, _
                               adLockReadOnly, adCmdText
----------------------------------------------------------------------------
--------------
Spero di esserti stato utile,
Saluti
    Alfredo.

Per fare quello che dici non devi creare un ActiveX control ma una pagina
attiva (.ASP). Infatti il primo >viene scaricato ed eseguito sul client,
mentre la seconda viene eseguita sul server (NTServer+IIS) ed il >risultato
viene inviato al client.
Credo che ovviamente non parlasse di una semplice pagina html...
Probabilmente l'Activex č o un ActiveX Control o un ActiveX Document e l'
accesso ai dati ha bisogno di una gestione piů complessa di quella possibile
con le pagine ASP... ;ç))
Alfredo.