Хм, CreateQueryDef в Access 2002

2 отговора 440 прегледа
#1

Хм, CreateQueryDef в Access 2002

Имам следния код:

Dim db As DAO.Database
Dim str As String
Dim q As DAO.QueryDef


str = "UPDATE блабла" & _
"t1.id= t2.id" & _
"SET t1.flag = 1 " & _
"WHERE t2.id1= " & Me.id1

Set db = CurrentDb
Set q = db.CreateQueryDef("test", str)
q.Execute
q.Close

Debug.Print q.RecordsAffected

Set db = Nothing

Та проблемът ми е следният. Query-то си бачка и си ъпдайтва. Обаче тая кретения като стигне до криейта ми праска съобщението "Object already exists". И наистина е така. Ако сменя името на test1 си завършва кода успешно. И така до следващото изпълненеие на кода
Седя и се чудя къде бъркам. Четох в хелпа, ама ....
Мерси предварително, за всеки който откликне.....

Отговор
в отговор на Дyxчe #2

Re: Хм, CreateQueryDef в Access 2002

Ами предварително провери дали съществува Query-то и го изтрий.

Dim db As DAO.Database
Dim str As String
Dim q As DAO.QueryDef



Dim t As New ADODB.Recordset

t.Open "SELECT NAME FROM MSysObjects WHERE Name = 'test' ", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
If Not t.EOF Then Application.CurrentDb.QueryDefs.Delete "test"
t.Close


str = "UPDATE ABC SET ABC.t = '456' WHERE (((ABC.t)='123'));"


Set db = CurrentDb
Set q = db.CreateQueryDef("test", str)
q.Execute
q.Close

Debug.Print q.RecordsAffected

Set db = Nothing

Отговор
в отговор на planik #3

Re: Хм, CreateQueryDef в Access 2002

Mersi,
ок става...
но ми се струва, че ще е по-елегантно в края на кода, демек...

Application.CurrentDb.QueryDefs.Delete "test"
set db = nothing

Отговор