ACC: Nové záznamy SQL se odstraněných do Recordset znovu otevřen.

Překlady článku Překlady článku
ID článku: 135379 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Upřesnit: Vyžaduje odborných kódování interoperability a víceuživatelské dovedností.

Po přidání záznamu do tabulky SQL pomocí programu Visual Basic for Applications, pokud v tabulce jedinečný index pole má výchozí hodnotu a nepřiřadíte hodnotu do tohoto pole nový záznam zobrazí odstraněné, dokud neotevřete tabulku SQL. Pokud se pokusíte získat hodnotu z nového záznamu, zobrazí následující chybová zpráva:
Chyba spuštění '3167'
Záznam je odstraněn.

Řešení

Pokud otevřete tabulku SQL pomocí kódu jazyka Visual Basic, patří možnost dbSeeChanges, jako v následujícím příkladu:
   Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)
				

DbSeeChanges možnost zajišťuje, že nově přidaným záznamy, které obsahují výchozí hodnotu v poli jedinečný index, jsou k dispozici v aktuální sadu záznamů.

Prohlášení

Toto chování je záměrné.

Další informace

Kroky pro reprodukci chování


  1. Vytvořte modul a zadejte následující řádek v sekci deklarací, pokud již není k dispozici:
          Option Explicit
    						
  2. Zadejte následující proceduru:
          Function TestSQLData()
    
             Dim db As Database, rs As Recordset
             Dim idx, td
             Dim cmd As String
    
             ' Delete TestTable if it exists on the SQL server.
             Set db = OpenDatabase("", False, False,ODBC;dsn=<datasource>; _
                database=<database>;uid=<user id>;pwd=<password>")
             cmd = "if exists (select * from sysobjects where _
                id = object_id('dbo.TestTable'))"
             cmd = cmd & " drop table TestTable"
             db.Execute cmd, dbSQLPassThrough
    
             ' Create TestTable with one field on SQL server.
             Set td = db.CreateTableDef("TestTable")
             td.Fields.Append td.CreateField("Int", dbInteger)
             td.Fields.Append td.CreateField("String", dbText, 50)
             db.TableDefs.Append td
    
             Set idx = td.CreateIndex("MyIdx")
             idx.Unique = True
             idx.Fields.Append idx.CreateField("Int")
             td.Indexes.Append idx
    
             cmd = "create Default TestDef3 as 100"
             db.Execute cmd, dbSQLPassThrough
    
             cmd = "sp_bindefault TestDef3, 'TestTable.Int'"
             db.Execute cmd, dbSQLPassThrough
    
             ' Open table, add a record, and then obtain values.
             Set rs = db.OpenRecordset("TestTable")
             rs.AddNew
             rs!String = "Trial"
             rs.Update
    
             Debug.Print "RecordCount = " & rs.RecordCount
             rs.MoveFirst
             Debug.Print "String is " & rs("String")
             Debug.Print "Int is " & rs("Int")
             rs.Close
    
          End Function
    						
  3. Chcete-li tuto funkci otestovat, zadejte následující řádek v ladicím okně a stiskněte klávesu ENTER:

    ? TestSQLData()

    Všimněte si, že nastane chyba spuštění '3167'.

Odkazy

Další informace o metodě OpenRecordset "OpenRecordset" nebo "Metodě OpenRecordset" vyhledat v rejstříku nápovědy nebo požádejte pomocníka Office Microsoft Access 97.

Vlastnosti

ID článku: 135379 - Poslední aktualizace: 2. února 2014 - Revize: 3.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Klíčová slova: 
kbnosurvey kbarchive kbmt kberrmsg kbprb kbusage KB135379 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:135379

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com