Newsgroup: it.comp.appl.access
Titolo: Help! Metodo Seek/Index  mi restituisce errore

Ciao a tutti.
Sono alle prese con un problema strano poiché 
ho già utilizzato altre volte il metodo Seek per identificare un record in un Recordset e non ho mai avuto problemi.
Questa volta mi restituisce l'errore: 
"IdPratica" non è un indice in questa tabella  (Errore 3800)
 
Il campo "IdPratica" non è un campo con Chiave Primaria
ma è comunque Indicizzato (Duplicati non ammessi)
quindi perché mi dice che non è un indice? 
 
Ecco la routine:
Dim dbs As Dao.Database
Dim rsAgenda As Dao.Recordset
Set dbs = CurrentDb
Set rsAgenda = dbs.OpenRecordset("Agenda2")
 
Dim varPratica As Integer
varPratica = Forms!Pratiche!pratica_N
 
rsAgenda.MoveFirst
rsAgenda.Index = "IdPratica"
rsAgenda.Seek "=", varPratica
 
Grazie per la risposta....

 rsAgenda.Seek "=", varPratica
 
Hai controllato se il nome del indice nella tabella è identico con il 
nome del campo (p.e. nel dialogo dei indici in vis. struttura)?
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 

Hai diviso il Database in FE-BE...?
 
Su LinkedTable il metodo SEEK non funziona... come scritto chiaramente quì:
https://msdn.microsoft.com/en-us/library/office/ff836416.aspx
 
 
Se hai un BE puoi usare il metodo SEEK aprendo un oggetto Database direttamente sul Client e da li un oggetto Recordset sulla Tabella...
 
Tuttavia, se hai un FE-BE ti suggerirei di usare il metodo FindFirst...
 
rsAgenda.FindFirst "IdPratica=" & varPratica
If rsAgenda.Nomatch then
  MsgBox "non trovato"
Else
  MsgBox "Trovato"
ENd if
 
@Alex
 
@Alex 


Ciao Karl,
ho ricontrollato il nome in tabella ed è IdPratica
ma non ho capito a quale CAMPO ti riferisci.


Ciao Alex il Db non è ancora diviso in FE-BE ma lo sarà.
Gli altri DB precedenti sono divisi e le routine con Seek-Index funzionano.
Adesso provo con il metodo Findfirst da te suggerito. 
Grazie.

Il giorno giovedì 20 settembre 2018 18:57:30 UTC+2, @Alex ha scritto:

Ho provato la tua routine e mi restituisce un altro errore:
"Operazione non supportata per questo tipo di oggetto"
 
Effettivamente prima di provare il metodo Seek avevo provato 
questo metodo ma mi aveva già dato questo messaggio! 
Sono in trappola! ... 
 


ERRATA GORRIGE:
IdPratica è indicizzato ma con Duplicati ammessi, infatti rappresenta il lato MOLTI di VarPratica (lato UNO)
A questo punto è più indicato utilizzare il metodo FindFirst ma con più chiavi di ricerca... E' possibile? 
Per esempio potrei usare il campo data come doppia chiave di ricerca... 

 Grazie.
 
Direi che stai dicendo una cosa NON VERA.
Seek NON FUNZIONA assolutamente su LINKEDTABLE... non hai letto il LINK che ti ho allegato... lo dice a metà, quindi qualche cosa che dici è fuori contesto...
 
Vedi tu.
@Alex

 ...
 
Dovresti suggerire testi meno lunghi e più puntualizzanti. ;-)
 
Seek con tabelle collegate
http://www.donkarl.com/it?FAQ6.10
 


Vorresti dire che non sono stato abbastanza chiaro...?
 
Beh dai mi perdonerai se non ricordo a memoria gli arricoli del tuo sito... ma confido sempre che tu intervenga a pubblicizzarli come hai fatto ora... ;-)
 
Grazie
@Alex


Ciao Alex, non è mia abitudine, ne' avrei l'interesse a dichiarare cose NON VERE. Sono qui per cercare di risolvere i miei problemi, non per raccontare frottole :-) Non parlo da teorico poiché sono un ignorante: dico solo che per 10 anni circa un database ha funzionato in FE_BE con questa routine:
 
Dim rstLavori As ADODB.Recordset
Set rstLavori = New ADODB.Recordset   
rstLavori.Open "Lavori", CurrentProject.Connection, adOpenDynamic, adLockBatchOptimistic
 
    DBEngine.BeginTrans
    rstLavori.Index = "IDLavori"
 
        For Each Posizione In SelezionaID.ItemsSelected
          rstLavori.Seek "=", SelezionaID.ItemData(Posizione)
 
Forse funzionava a causa della libreria ADODB (?), fatto sta che OGGI l'ho provata e non funziona più. 
Ora, francamente non mi interessa molto, vorrei però sapere perchè anche la tua soluzione mi ha dato problemi con quel messaggio:
"Operazione non supportata per questo tipo di oggetto" 
Non so più cosa pensare....
 
 



 Beh dai mi perdonerai se non ricordo a memoria gli arricoli del tuo sito... 
 
No! :-)


Il giorno venerdì 21 settembre 2018 09:00:34 UTC+2, Marco ha scritto:

RIPORTO L'ERRORE descritto dalla guida: 
 
  Operazione non supportata per questo tipo di oggetto. (Errore 3251) 
 
Si sta cercando di eseguire un metodo o assegnare un valore a una proprietà, ma questa operazione in genere valida per l'oggetto non è supportata in questa istanza specifica. Ad esempio, il metodo Edit è in genere valido per gli oggetti Recordset, ma non per l'oggetto Recordset di tipo snapshot. È inoltre possibile che questo errore si verifichi quando l'operazione non è consentita a causa del tipo o dello stato dell'oggetto, ad esempio quando si cerca di utilizzare il metodo MovePrevious per un oggetto Recordset di tipo forward–only. Alcune operazioni non sono inoltre supportate a seconda che si acceda a un modulo di gestione di database di Microsoft Access oppure a un'origine dati ODBC.

 
Karl sono assolutamente d'accordo con te. 
Parli con un musicista che paga ogni giorno il prezzo della superficialità e della brevità. 
Però per leggere un articolo fino alla fine è importante capirlo passo dopo passo. Se non lo capisci, ti perdi.  Io sono un autodidatta dell'informatica e con la mia auto-didattica...sono arrivato a ciò che sono oggi, e non di più :-) 

 ...sono assolutamente d'accordo con te...
 
Beh, come mai non hai letto il mio articolo breve segnalato per 
rispondere/risparmiare i tuoi tre post di oggi? :-)



Perchè come tutti i musicisti sono anche sbadato! :-)
Scusami ma non ho visto il link... 
Adesso ho letto l'articolo. 
((Il mistero rimane poiché attualmente il mio DB NON E' diviso! 
Quindi il metodo Seek dovrebbe funzionare! ... tuttavia poco importa visto che in genere i DB poi lavorano in FE_BE quindi devo abbandonare il metodo Seek.))
 
Ho aggiunto alla routine ("Agenda2", ddOpenDynaset) e FUNZIONA!!!! :-)
Ora devo aggiungere la doppia chiave di ricerca data. 
A presto...e  grazie!

Che era appunto anche quello chesuggerivo io pur nin avendo letto il breve e chiaro ed i dispensabile articolo di Karl.
 
Sarà che serve brevità o magari conoscenza e poca superficialità e meno sbadataggine ...?
 
@Alex


Peccavi, opere et omissione, mea culpa, mea culpa, mea maxima culpa!!!!