Fråga : InteropServices.COMException: Kan inte öppna något mera bordlägger.

Kära experter,

I har en enkel VB.NET att trösta applikationen som kretsar till och med all msaccess bordlägger och sätter in samlingar, sökandet för en given text värderar i applikationrättor för strSearch variable.

The för att avläsa till och med omkring 12 bordlägger ut ur 207 bordlägger i min msaccess testar databas. Och den ger mig runtime fel som efter:
---undantag för
Unhandled: System.Runtime.InteropServices.COMException: Kan inte öppna an
y mer tables.

för DAO.Database.OpenRecordset (stränga känt, anmärka typ, anmärka alternativ, Objec
t LockEdit), på
för scanTbls.Module1.Main (String [] sArgs)---förmiddagen för

I ser också den samma lösningen till denna med ADO, om DAO inte fungerar nedanför well.
Here, är min tröstar applikation:
---db för

för
Module Module1

underhuvudsaklig (ByVal sArgs () som stränger) dunkel som dunkla rs för DAO.Database
som DAO.Recordset
dunkla DaoDbEngine som ny tbl för
för DAO.DBEngine () dunkel som dunkel fld för DAO.TableDef
som dunkel strTbl för DAO.Field

som String
dunkel strFld som String
dunkel strSQL som String
dunkel cntTbl som Integer
dunkel strSearch som stränger = ”lösenordet " dunkelt strPathFile för
som stränger = ”c:\test.mdb "

db =

för DaoDbEngine.OpenDatabase (strPathFile) ”kretsar till och med en samling av tables
för varje tbl i strTbl = tbl för db.TableDefs

. Name

för varje fld i tbl. Fields
om fld. Typ = 10 ”skrivar därefter 10 är text, överhoppet för numrerar strFld = fld för search
. Name
strSQL = ”VÄLJER * FRÅN” & strTbl & ”VAR” & strFld för _
& ”=” ”& strSearch &””; ”rs för
=
för db.OpenRecordset (strSQL), om rs.RecordCount > 0 därefter ', om strSearch är funnen found
= True
Console.WriteLine (”bordlägga känt: ” &
för strTbl) avslutar If
avslutar If
Next
avslutar If
Next

på felmeritförteckningNext
db. Nära () tbl för
= Nothing
fld = Nothing
rs = Nothing
db = Nothing
DaoDbEngine = Nothing

avslutar Sub

End Module
---

" klar "

Svar : InteropServices.COMException: Kan inte öppna något mera bordlägger.

Vad händer, om du tillfogar ett Recordset slut:

    För varje fld i tbl. Sätter in
                  Om fld. Typ = 10 'skrivar därefter 10 är text, överhoppet för numrerar sökande
                      strFld = fld. Känt
                        strSQL = ”VÄLJER * FRÅN” & strTbl & ”VAR” & _,
                                  strFld & ”= ”” & strSearch & ””; ”,
                        rs = db.OpenRecordset (strSQL)
                        Om rs.RecordCount > 0 därefter ', om strSearch finnas
                            funnit = True
                            Console.WriteLine (”bordlägga känt: ” & strTbl)
                        Avsluta om

                        'Rena övre öppna Recordsets, som du går…,
                        rs. Nära

                    Avsluta om
                Därefter
Andra lösningar  
 
programming4us programming4us