Questione : InteropServices.COMException: Non può aprire altre tabelle.

I cari esperti, il

I hanno un'applicazione semplice della sezione comandi di VB.NET che i cicli attraverso tutte le tabelle del msaccess e sistema le collezioni, ricerca di un valore dato del testo nell'applicazione dello strSearch variable.

The riesce ad esplorare attraverso circa 12 tabelle su 207 tabelle nella mia base di dati della prova del msaccess. E mi dà l'errore runtime come quanto segue:
---eccezione del
Unhandled: System.Runtime.InteropServices.COMException: Non può aprire il an
y più tables.
al
di DAO.Database.OpenRecordset (nome della stringa, tipo di oggetto, opzioni dell'oggetto, Objec
t LockEdit) al
di scanTbls.Module1.Main (sArgs di String [])---il

I anche che osserva la stessa soluzione a questo con DIFFICOLTÀ se DAO non funziona well.
Here qui sotto è la mia applicazione della sezione comandi:
---il

della conduttura del
Module Module1

(sArgs di ByVal () come stringa) oscura il db come rs fiochi di DAO.Database
come DAO.Recordset
DaoDbEngine fioco come nuovo tbl fioco del
di DAO.DBEngine () come fld fioco di DAO.TableDef
come strTbl fioco di DAO.Field

come strFld fioco di String
come strSQL fioco di String
come cntTbl fioco di String
come strSearch fioco di Integer
come stringa = ciclo “di c:\test.mdb "

il db = DaoDbEngine.OpenDatabase (strPathFile) il

““di parola d'accesso " strPathFile fioco del
come stringa = attraverso una collezione di tables
per ogni tbl nello strTbl = nel tbl di db.TableDefs

. Name

per ogni fld nel tbl. Fields
se fld. Il tipo = 10 allora “tipo 10 è testo, salto per lo strFld = il fld del search
di numero. Lo strSQL di Name
= “SELEZIONA * A PARTIRE„ & strTbl & “DOVE„ & strFld del _
& “=„ “& strSearch &„„; “rs del
=
di db.OpenRecordset (strSQL) se rs.RecordCount > 0 allora 'se lo strSearch è found
trovato = True
Console.WriteLine (“nome della tabella: „ & estremità If
Next

di If
Next
di conclusione di If
di conclusione del
dello strTbl) sul db di Next
del riassunto di errore. Chiudere () il tbl del
= il fld di Nothing
= i rs di Nothing
= Nothing
db = estremità Sub

End Module
di Nothing
DaoDbEngine = di Nothing

---

class= del

Risposta : InteropServices.COMException: Non può aprire altre tabelle.

Che cosa accade se aggiungete una fine di Recordset:

    Per ogni fld nel tbl. Campi
                  Se fld. Il tipo = 10 allora 'tipo 10 è testo, salto per la ricerca di numero
                      strFld = fld. Nome
                        lo strSQL = “SELEZIONA * A PARTIRE„ & strTbl & “DOVE„ & _
                                  strFld & “= “„ & strSearch & “„; “
                        rs = db.OpenRecordset (strSQL)
                        Se rs.RecordCount > 0 allora 'se lo strSearch è trovato
                            trovato = allineare
                            Console.WriteLine (“nome della tabella: „ & strTbl)
                        Concluder se

                        'Pulire Recordsets aperto come andate…
                        rs. Fine

                    Concluder se
                Dopo
Altre soluzioni  
 
programming4us programming4us