PDA

View Full Version : سوال: ایجاد یک رکورد خالی بین رکوردها و آپدیت رکوردهای بعد از آن



Hedesh
دوشنبه 25 اردیبهشت 1391, 08:42 صبح
با سلام خدمت دوستان گرامی

من یک دیتابیس دارم که دارای یک فرم و یک ساب فرمه که توسط جداولشون به هم مرتبطند.
حالا من می خوام بین اطلاعاتی که قبلا وارد کردم یک رکورد خالی ایجاد کنم به طوری که رکوردهای بعد از اون
با حفظ همون ارتباط به رکورد بعد منتقل بشن.
من جستجو کردم و یه کد از یکی از تاپیک ها رو توی نمونه اعمال کردم ولی خیلی ناقصه و عملکردش با اشکال همراهه.

نمونه فایل با فرمت 2003 و 2007 را ضمیمه کردم.
ممنون میشم راهنمایی کنید.

Hedesh
دوشنبه 25 اردیبهشت 1391, 15:44 عصر
من از این کد برای ایجاد رکورد خالی بین رکوردهام استفاده کردم
و مشکلش اینه که باید رکوردهای بعد از رکورد مورد نظر را به ترتیب به یک شماره بالاتر تغییر دهد
ولی در این کد فقط به آخرین رکورد یک عدد اضافه می کند.
Private Sub Command2_Click()
Dim IDnumber As Double
Dim StrSQLUPDATE As String
Dim StrSQLINSERT As String
Dim Dbs As DAO.Database

Set Dbs = CurrentDb
IDnumber = Me.NewID

StrSQLUPDATE = "UPDATE table1 SET table1.Id = table1.Id+1 WHERE table1.Id>=" & IDnumber & ";"
StrSQLINSERT = "INSERT INTO table1(ID) VALUES(" & IDnumber & ");"

Dbs.Execute StrSQLUPDATE
Dbs.Execute StrSQLINSERT

Me.Requery

MsgBox "Completed"
End Sub

Hedesh
دوشنبه 25 اردیبهشت 1391, 20:36 عصر
با سلام خدمت دوستانی که این تاپیک رو فقط مشاهده کردند.:تشویق:

باید بگم که تونستم مشکلم رو برطرف کنم
اینم کدش
Private Sub Command2_Click()

Dim StrSQLUPDATE As String
Dim StrSQLINSERT As String
Dim strA As String
Dim Dbs As DAO.Database
Set Dbs = CurrentDb

Dim IDnumber As Double
Dim LastId As Double
Dim count

DoCmd.OpenForm "maxID", , , , , acHidden
LastId = Forms![maxID]![MaxOfID]

If Not IsNull(Me.NewID) Then
IDnumber = Me.NewID
For count = LastId To IDnumber Step -1
'x = count + 1
'MsgBox x
StrSQLUPDATE = "UPDATE table1 SET table1.Id = table1.id +1 WHERE table1.Id=" & count & ";"
StrSQLINSERT = "INSERT INTO table1(ID) VALUES(" & IDnumber & ");"
Dbs.Execute StrSQLUPDATE
Dbs.Execute StrSQLINSERT

Next

Else
MsgBox "ÈÑÇí ÇíÌÇÏ ÓäÏ ÎÇáí ÔãÇÑå ÓäÏ ÞÈá ÇÒ Âä ÑÇ æÇÑÏ ˜äíÏ "
exit Sub
End If

Me.Refresh
DoCmd.Close acForm, "maxID"
Me.Requery

MsgBox "ÓäÏ ãæÑÏ äÙÑ ÇíÌÇÏ ÔÏ æ јæÑÏåÇí ÈÚÏ ÇÒ Âä ÏíÊ ÔÏ."

DoCmd.FindRecord IDnumber, , True, , True
DoCmd.FindNext


End Sub

و فایلش رو ضمیمه کردم
امیدوارم مورد استفاده قرار بگیره
:تشویق: