PRB: Impostazione della proprietà Sort di un oggetto Recordset di ADO provoca la visualizzazione di runtime messaggio di errore 3251

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 253248
Dichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Sintomi
Impostando la proprietà di ordinamento della finestra di un oggetto ADO Recordset con proprietà CursorLocation non è stata impostata in modo esplicito o è stata impostata su adUseServer , causa il seguente messaggio di errore da visualizzare:
Errore di Runtime '3251': l'operazione richiesta dall'applicazione non è supportato dal provider
In alternativa, in MDAC 2.6 o versione successiva, verrà visualizzato il seguente messaggio:
Errore di Runtime '3251': provider corrente non supporta la le interfacce necessarie per l'ordinamento o filtraggio.
Cause
Il provider in uso non espone le interfacce di OLE DB richieste dal metodo ADO ordinamento. Questi sono interfacce facoltative. La maggior parte dei provider OLE DB non supportano il metodo di ordinamento quando si utilizzano i cursori sul lato server.
Risoluzione
Il metodo di ordinamento è supportato da ADO Client Cursor Engine. Impostare la proprietà CursorLocation dell'oggetto ADO recordset su adUseClient prima di aprirlo.

- oppure -

Se il provider OLEDB supporta un linguaggio di query, ad esempio SQL, è possibile richiedere i record in un ordinamento. Ad esempio, i provider Microsoft Jet e OLEDB di Microsoft SQL Server supportano la clausola SQL ORDER BY . Se si desidera riordinare i dati, è necessario selezionare nuovamente, oppure utilizzare un cursore del lato client.
Status
Questo comportamento legato alla progettazione.
Informazioni
L'impostazione predefinita la proprietà CursorLocation dell'oggetto ADO Recordset quando non viene specificato in modo esplicito è adUseServer . Questa impostazione utilizza un cursore di fornito da driver o provider di dati per creare il recordset.

Impostazione della proprietà CursorLocation il recordset ADO su adUseClient utilizza un cursore sul lato client fornito dalla libreria di cursore locale per creare e popolare il recordset. ADO Client Cursor Engine supporta il metodo di ordinamento e può essere utilizzato se il provider OLDEB non.

Procedura per riprodurre il problema

Nell'esempio viene utilizzata database pubs di SQL Server 7.0. Il problema può inoltre essere riprodotto utilizzando il provider OLEDB di Microsoft Jet e un database di Access.
  1. Aprire un nuovo progetto di EXE standard in Visual Basic 5.0 o 6.0. In base all'impostazione predefinita, viene creato il progetto Form1.
  2. Scegliere riferimenti dal menu progetto . Aggiungere un riferimento alla libreria di ActiveX Data Objects.
  3. Aggiungere un pulsante di comando (Command1) al form predefinito e modificare la proprietà Caption per Ordina record .
  4. Aggiungere il codice riportato di seguito al form:
    Option ExplicitDim cn As ADODB.ConnectionDim rs As ADODB.RecordsetPrivate Sub Form_Load()  Set cn = New ADODB.Connection  cn.Open "Provider=SQLOLEDB.1;Data Source=MyServer;Initial   Catalog=pubs;User ID=<user name>"End SubPrivate Sub Command1_Click()  Set rs = New ADODB.Recordset'  rs.CursorLocation = adUseClient  rs.open "Select * from Authors", cn, adOpenKeyset, adLockReadOnly, adCmdText  rs.Sort = "au_lname desc"  Do While Not rs.EOF    Debug.Print rs!au_lname    rs.MoveNext  Loop  rs.CloseEnd Sub					
    Nota È necessario modificare la stringa di connessione per puntare a un'origine dati validi. Assicurarsi che l'ID utente disponga di autorizzazioni appropriati eseguire questa operazione sul database.
  5. Eseguire il progetto e scegliere il pulsante di comando . Si noti che sia visualizzato l'errore indicato nella sezione "Sintomi" di questo articolo.
  6. Interrompere il progetto e rimuovere il commento la riga seguente:
    '  rs.CursorLocation = adUseClient					
  7. Eseguire di nuovo il progetto. Si noti che viene completata correttamente e che i record stampati in ordine decrescente in au_lname.

Avviso: questo articolo è stato tradotto automaticamente

Savybės

Straipsnio ID: 253248 – Paskutinė peržiūra: 11/06/2003 23:06:25 – Peržiūra: 2.0

Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.01, Microsoft ActiveX Data Objects 2.1, Microsoft ActiveX Data Objects 2.1 Service Pack 1, Microsoft ActiveX Data Objects 2.1 Service Pack 2, Microsoft ActiveX Data Objects 2.5, Microsoft ActiveX Data Objects 2.6, Microsoft ActiveX Data Objects 2.7

  • kbmt kbprb KB253248 KbMtit
Atsiliepimai