PDA

View Full Version : سوال: در مورد append از فایل اکسس پروجکت



azadich
چهارشنبه 04 دی 1392, 20:20 عصر
من از فرمول زیر برای اپند کردن از یه فایل دیگر استفاده می کنم موقعی که از فایل mdb اپند می کنم مشکلی نیست اما از فایل ade یا adp اپند نمیشه چه تغییری ایجاد کنم؟ممنون

DoCmd.SetWarnings (warningsoff)
On Error GoTo ErrHandler
Dim strSql As String, fd As FileDialog
Set fd = FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Filters.add "Access Files", "*.adp;*.ade;*.mdb", 1
.InitialFileName = CurrentProject.Path
If .Show Then
strPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
If MsgBox("ÏÑÕæÑÊ æÌæÏÇØáÇÚÇÊ ÞÈáí¡ÇØáÇÚÇÊ ÌÏíÏ ÌÇíÒíä ÔæäÏ", vbYesNo + vbQuestion, "åÔÏÇÑ") = vbYes Then
strSql = "DELETE * FROM Students " & _
" WHERE StudentCode IN(SELECT StudentCode FROM Students IN '" & strPath & "');"
DoCmd.RunSQL strSql
Refresh
End If

strSql = "INSERT INTO Students ( StudentCode, FirstName, LastName, FatherName, Sex, LastTimeYear, LastGrade, LastClassRoomCode ) " & _
"SELECT StudentCode, FirstName, LastName, FatherName, Sex, LastTimeYear, LastGrade, LastClassRoomCode " & _
"FROM Students IN '" & strPath & "' WHERE Not IsNull(StudentCode);"
DoCmd.RunSQL strSql
Refresh
Exit Sub
ErrHandler:
If Err = 3078 Then
MsgBox "ÌÏæá ÇØáÇÚÇÊ Çíä Çíå ÏÑ ÝÇíá ÇäÊÎÇÈ ÔÏå æÌæÏ äÏÇÑÏ", , "ÎØÇ"
ElseIf Err <> 2501 Then
MsgBox "ÇØáÇÚÇÊ Çíä Çíå íÇ ÑÔÊå ÏÑ Çíä ÝÇíá æÌæÏ äÏÇÑÏ", , "ÎØÇ"
End If

Abbas Amiri
جمعه 06 دی 1392, 14:51 عصر
من از فرمول زیر برای اپند کردن از یه فایل دیگر استفاده می کنم موقعی که از فایل mdb اپند می کنم مشکلی نیست اما از فایل ade یا adp اپند نمیشه چه تغییری ایجاد کنم؟ممنونبرای استفاده از فایل های adp شما باید از ابزارهای ADO استفاده کنید . دستورات DAO در آنجا کاربرد ندارد

azadich
شنبه 07 دی 1392, 08:30 صبح
برای استفاده از فایل های adp شما باید از ابزارهای ADO استفاده کنید . دستورات DAO در آنجا کاربرد ندارد
میشه لطف کنید برای اینکه مثل همین دستور اجرا بشه چه کدی نوشت؟ممنون میشم

azadich
یک شنبه 08 دی 1392, 16:03 عصر
استادی ما را راهنمایی نمی کنه؟

Abbas Amiri
یک شنبه 08 دی 1392, 19:30 عصر
میشه لطف کنید برای اینکه مثل همین دستور اجرا بشه چه کدی نوشت؟ممنون میشم

روال زیر را در یک ماژول(در ماژول همان فرم و یا یک ماژول عمومی) کپی کنید و هر جا عبارت DoCmd.RunSQL strSql بود بجای آن AdodbRunSQL strSQL را قرار دهید .
ابتدا رفرنس Microsoft Data Object 2.x Library را اضافه کنید

Sub AdodbRunSQL(strSQL As String)
On Error GoTo ErrHandler
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
ExitAdodbRunSQL:
Set rs = Nothing
Exit Sub
ErrHandler:
MsgBox Err.Description
GoTo ExitAdodbRunSQL
End Sub

azadich
دوشنبه 09 دی 1392, 07:44 صبح
روال زیر را در یک ماژول(در ماژول همان فرم و یا یک ماژول عمومی) کپی کنید و هر جا عبارت DoCmd.RunSQL strSql بود بجای آن AdodbRunSQL strSQL را قرار دهید .
ابتدا رفرنس Microsoft Data Object 2.x Library را اضافه کنید

Sub AdodbRunSQL(strSQL As String)
On Error GoTo ErrHandler
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
ExitAdodbRunSQL:
Set rs = Nothing
Exit Sub
ErrHandler:
MsgBox Err.Description
GoTo ExitAdodbRunSQL
End Sub
روی این قسمت ایراد گرفت:, fd As FileDialog

Abbas Amiri
دوشنبه 09 دی 1392, 18:14 عصر
روی این قسمت ایراد گرفت:, fd As FileDialog

این ربطی به موضوع شما نداشت .

رفرنس Microsoft Office 1x.0 Objects Libray را اضافه کنید

azadich
سه شنبه 10 دی 1392, 06:58 صبح
خیلی ممنون .حالا این پیغام میده اگه لطف کنید برطرف کنید ممون میشم.پیغام پیوست هست

Abbas Amiri
سه شنبه 10 دی 1392, 12:32 عصر
خیلی ممنون .حالا این پیغام میده اگه لطف کنید برطرف کنید ممون میشم.پیغام پیوست هست

این طور که پیداست این فایل رو خود شما نساختید . پیغام فوق هم معمولا وقتی ورژن فایل اکسس از ورژن نصب شده در سیستم شما بالاتر باشد ، نمایش داده می شود .

فایل رو آپلود کنید تا دوستان راهنمایی کنند .

azadich
سه شنبه 10 دی 1392, 16:54 عصر
من داخل ورژن 2003 کار می کنم

Abbas Amiri
چهارشنبه 11 دی 1392, 00:22 صبح
من داخل ورژن 2003 کار می کنم

تصور بنده این بود که شما در محیط ADP قصد انجام عملیات دارید . برای اینکه از محیط ADP رکورد به فایل mdb اضافه کنید یک مثال ایجاد کردم . برای باقی موارد (DELETE,EDIT,...) باید تحقیق کنید

Sub AppendFromAdp(AdpDbPath As String, strSQL As String)
On Error GoTo ErrHandler
Dim db As Object
Dim rs As ADODB.Recordset, fld As ADODB.Field
Dim adoConn As ADODB.Connection, strConn As String
Set db = GetObject(AdpDbPath)
db.Application.visible = False
Set adoConn = New ADODB.Connection
strConn = db.CurrentProject.Connection.ConnectionString
adoConn.ConnectionString = strConn
Set rs = New ADODB.Recordset
adoConn.Open
rs.Open strSQL, adoConn, adOpenDynamic, adLockOptimistic
While Not rs.EOF
CurrentDb.Execute "INSERT INTO Accounts VALUES(" & rs("AccID") & ",'" & rs("AccName") & "')"
rs.MoveNext
Wend
ExitAdodbRunSQL:
Set rs = Nothing
Set adoConn = Nothing
Set db = Nothing
MsgBox "Records Transferd Succefully"
Exit Sub
ErrHandler:
MsgBox err.Description
GoTo ExitAdodbRunSQL
End Sub


مثال : AdodbRunSQL "C:\Database2.adp" ,"SELECT * FROM Accounts"

azadich
چهارشنبه 11 دی 1392, 06:19 صبح
ممنون از حوصله ای که به خرج دادید، فقط می خوام رکوردهای تکراری را وارد نکنه.ممنون