Maschera Associata a ADODB Recordset

di il
5 risposte

Maschera Associata a ADODB Recordset

Salve a tutti,

Sto cercando di capire come associare una maschera di access ad una vista di sql server

ho trovato un codice che ho modiicato per le mie esigenze
Private Sub Form_Load()
Debug.Print Now()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
   Set cn = New ADODB.Connection
   Set rs = New ADODB.Recordset
   cn.Open (TempVars![SConAdo])
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM VistaMascheraAnagrafica"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .Open
   End With
Set Me.Recordset = rs

'Debug.Print rs!matricola

Debug.Print Now()
End Sub

quando carico la maschera mi da errore di Run-time Error '-2147221164 (80040154)' Impossibile creare il provider di dati
facendo debug.print, togliendo il set me.recordset mi legge bene!
Quindi dove sbaglio?
la Stringa di connessione che uso è questa
"Provider=sqloledb;Data Source=tcp:FRANCESCOPORT,49172;Initial Catalog=ARCHIVIOGENERALE; User Id=admin;Password=admin;"

5 Risposte

  • Re: Maschera Associata a ADODB Recordset

    Perché usi ADO...?
    ADO aveva senso assoluto con i progetti ADP che non coinvolgevano il driver DAO connettendosi in modo nativo.
    Questo non è più gestibile ed io ti suggerirei di usare il.metodo standard...
    https://oakdome.com/programming/MSAccess_Bound_Form_SQL_View.php

    In ogni caso:
    https://docs.microsoft.com/en-us/office/vba/access/concepts/activex-data-objects/bind-a-form-to-an-ado-recordset
  • Re: Maschera Associata a ADODB Recordset

    In realtà uso già il collegamento tramite odbc, ma cercavo qualcosa di più veloce specie quando utilizzo cerca dalla maschera in una vista con molti record circa 27.000.
    il codice di base l ho preso dal docs di microsoft che hai postato tu, ma mi da quell errore e non capisco dove sbaglio
  • Re: Maschera Associata a ADODB Recordset

    Più veloce mi fa un poco sorridere... ma ci sarebbe da fare un trattato.
    La vista è readonly... una query PassTrought l'hai provata...?
  • Re: Maschera Associata a ADODB Recordset

    Una query passtrought per definire i record di origine?

    dici che velocizza?
    se non ho capito male il problema sta nel fatto che sql server prende i dati a pacchetti quindi se scorro avanti non ho problemi perchè lui a poco a poco li legge, ma se cerco un record che è nella posizione 27.001 su 27.500 ci mette un po ad arrivare
    Giusto?

    quindi pensavo che se collegassi la maschera direttamente al sql server i tempi di attesa diminuiscono?
    che dici? sto navigando a vista di notte?
  • Re: Maschera Associata a ADODB Recordset

    Credo di si.
    Le query PassTrought, ReadOnly, vengono eseguite lato server se costruite Bene, se all'interno della query metti un DCOUNT ovviamente commetti un gravissimo errore perché SQL Server nemmeno sa cosa sia, questo rende la query incomprensibile, risultato SQLSERVER ti spara l'intera tabella che viene rielaborata ClientSide...
    Molti utenti poco pratici commettono questi errori.
    In SQLSERVER esiste uno strumento QueryOptimizer o Analyzer non ricordo più che ti mostra i piani di es ecuzione delle chiamate al fine di capire dove si crea il rallentamento e porci rimedio.

    Il driver DAO ad esempio, nonostante consenta la connessione alla Linked intera, qual'ora tu applicassi un filtro VBA sulla form verrebbe risolto lato server, sempre se ben costruito.

    Insomma secondo me stai facendo considerazioni tecniche ma con un background di nebbia assoluto...
Devi accedere o registrarti per scrivere nel forum
5 risposte