PDA

View Full Version : سوال: query appended



azadich
جمعه 30 فروردین 1392, 21:26 عصر
سلام خدمت اساتید محترم من دو تا فایل اکسس دارم با جدول a حال می خوام بوسیله کوئری اپندد اطلاعات را از فایل اول به جدول فایل دومی اضافه کنم چطور انجام میشه وقتی داخل یه فایل هست اطلاعات دو جدول میشه اپندد کرد حالا وقتی فایل ها جدا باشه چگونه انجام میشه ممنون

azadich
شنبه 31 فروردین 1392, 08:45 صبح
سلام خدمت اساتید محترم من دو تا فایل اکسس دارم با جدول a حال می خوام بوسیله کوئری اپندد اطلاعات را از فایل اول به جدول فایل دومی اضافه کنم چطور انجام میشه وقتی داخل یه فایل هست اطلاعات دو جدول میشه اپندد کرد حالا وقتی فایل ها جدا باشه چگونه انجام میشه ممنون
استاد ارجمندی پیدا نشد جواب ما را بده ضروری هست ممنون میشم

azadich
شنبه 31 فروردین 1392, 17:31 عصر
استاد ارجمندی پیدا نشد جواب ما را بده ضروری هست ممنون میشم
با سلام مجدد من یه نمونه پیدا کردم و گذاشتم منتها اگه دوستان لطف کنند و به صورت زیر رفع اشکال کنند عالی میشه:1-الان فایل طوری هست که با زدن دکمه روی فرم در فایل مرجع اطلاعات از جدول مرجع وارد فایلa میشه که می خوام برعکس بشه یعنی با زدن دکمه روی فرم مرجع مسیر فایل a پرسیده بشه و بعد اطلاعات فایلa وارد جدول فایل مرجع بشه.
2-اگه اطلاعات تکراری بود پیغام فارسی بده. خیلی عالی میشه اگه اساتید لطف کنند اصلاح فرمایند

Abbas Amiri
یک شنبه 01 اردیبهشت 1392, 20:19 عصر
با سلام مجدد من یه نمونه پیدا کردم و گذاشتم منتها اگه دوستان لطف کنند و به صورت زیر رفع اشکال کنند عالی میشه:1-الان فایل طوری هست که با زدن دکمه روی فرم در فایل مرجع اطلاعات از جدول مرجع وارد فایلa میشه که می خوام برعکس بشه یعنی با زدن دکمه روی فرم مرجع مسیر فایل a پرسیده بشه و بعد اطلاعات فایلa وارد جدول فایل مرجع بشه.
2-اگه اطلاعات تکراری بود پیغام فارسی بده. خیلی عالی میشه اگه اساتید لطف کنند اصلاح فرمایند

کد مربوط را بشکل زیر تغییر دهید:



Private Sub Command0_Click()
Dim strSql As String
strSql = "INSERT INTO tblReshte ( ReshteName, RetshteCode, ReshteI ) " & _
"SELECT ReshteName, RetshteCode, ReshteI " & _
"FROM tblReshte IN '" & CurrentProject.Path & "\a.mdb';"
DoCmd.RunSQL strSql
End Sub


چون آدرس فایل مبدا در همان پوشه برنامه بود ، آدرس را بصورت فوق نوشتم .

azadich
یک شنبه 01 اردیبهشت 1392, 22:55 عصر
کد مربوط را بشکل زیر تغییر دهید:



Private Sub Command0_Click()
Dim strSql As String
strSql = "INSERT INTO tblReshte ( ReshteName, RetshteCode, ReshteI ) " & _
"SELECT ReshteName, RetshteCode, ReshteI " & _
"FROM tblReshte IN '" & CurrentProject.Path & "\a.mdb';"
DoCmd.RunSQL strSql
End Sub


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

azadich
دوشنبه 02 اردیبهشت 1392, 08:13 صبح
خواهشا استاد ارجمندی کمک کنه

Abbas Amiri
دوشنبه 02 اردیبهشت 1392, 22:26 عصر
عالی بسیار ممنون خیلی تشکر می کنم فقط می خوام مسیر فایل a را بپرسد یعنی پنجره ای باز شود که مسیر را انتخاب کنیم و موارد تکراری را قبول نکنه و پیغام فارسی بده که داده تکراری است

کد زیر را در رویداد کلیک باتن جایگزین کنید


Private Sub Command0_Click()
Dim strSql As String, fd As FileDialog
Set fd = FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Filters.Add "Access Files", "*.mdb;*.accdb", 1
.InitialFileName = CurrentProject.Path
If .Show Then
strPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
strSql = "INSERT INTO tblReshte ( ReshteName, RetshteCode, ReshteI ) " & _
"SELECT ReshteName, RetshteCode, ReshteI " & _
"FROM tblReshte IN '" & strPath & "' WHERE RetshteCode Not IN(SELECT RetshteCode FROM tblReshte);"
DoCmd.RunSQL strSql
End Sub

برای استفاده از FileDialog رفرنس MSO.dll را اضافه کنید .
البته پیغامی صادر نمیشود ولی از رکوردهای تکراری برحسب کدرشته جلوگیری میشود.

azadich
چهارشنبه 11 اردیبهشت 1392, 20:57 عصر
کد زیر را در رویداد کلیک باتن جایگزین کنید


Private Sub Command0_Click()
Dim strSql As String, fd As FileDialog
Set fd = FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Filters.Add "Access Files", "*.mdb;*.accdb", 1
.InitialFileName = CurrentProject.Path
If .Show Then
strPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
strSql = "INSERT INTO tblReshte ( ReshteName, RetshteCode, ReshteI ) " & _
"SELECT ReshteName, RetshteCode, ReshteI " & _
"FROM tblReshte IN '" & strPath & "' WHERE RetshteCode Not IN(SELECT RetshteCode FROM tblReshte);"
DoCmd.RunSQL strSql
End Sub

برای استفاده از FileDialog رفرنس MSO.dll را اضافه کنید .
البته پیغامی صادر نمیشود ولی از رکوردهای تکراری برحسب کدرشته جلوگیری میشود.

با سلام خطای پیوستی مربوط به کد بالا چگونه فارسی کنم ممنون میشم

Abbas Amiri
چهارشنبه 11 اردیبهشت 1392, 21:54 عصر
سلام
کد فوق را بصورت زیر تغییر دهید


Private Sub Command0_Click()
On Error GoTo ErrHandler
Dim strSql As String, fd As FileDialog
Set fd = FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Filters.Add "Access Files", "*.mdb;*.accdb", 1
.InitialFileName = CurrentProject.Path
If .Show Then
strPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
strSql = "INSERT INTO tblReshte ( ReshteName, RetshteCode, ReshteI ) " & _
"SELECT ReshteName, RetshteCode, ReshteI " & _
"FROM tblReshte IN '" & strPath & "' WHERE RetshteCode Not IN(SELECT RetshteCode FROM tblReshte);"
DoCmd.RunSQL strSql
Exit Sub
ErrHandler:
If Err = 3078 Then
MsgBox "جدول رشته ها در فایل انتخاب شده وجود ندارد"
Else
MsgBox "Error"
End If
End Sub

azadich
چهارشنبه 11 اردیبهشت 1392, 22:03 عصر
بسیار عالی ممنونم.حالا فقط و فقط یک اشکال مونده ان هم اینه که اگه مورد تکراری بود جایگزین بشه و با یک مسیج بوکس اطلاع دهد که مورد جایگزین شد خیلی عالی میشه.ممنون

azadich
پنج شنبه 12 اردیبهشت 1392, 11:30 صبح
بسیار عالی ممنونم.حالا فقط و فقط یک اشکال مونده ان هم اینه که اگه مورد تکراری بود جایگزین بشه و با یک مسیج بوکس اطلاع دهد که مورد جایگزین شد خیلی عالی میشه.ممنون
جوابی برای سوال بالا پیدا نشد اساتید بزرگوار؟!

azadich
پنج شنبه 12 اردیبهشت 1392, 20:05 عصر
منتظرم دوستان جوابی داره یا نه؟

Abbas Amiri
پنج شنبه 12 اردیبهشت 1392, 21:01 عصر
سلام
کدهای فوق را بصورت زیر تغییر دهید


Private Sub Command0_Click()
On Error GoTo ErrHandler
Dim strSql As String, fd As FileDialog
Set fd = FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Filters.Add "Access Files", "*.mdb;*.accdb", 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 tblReshte " & _
" WHERE RetshteCode IN(SELECT RetshteCode FROM tblReshte IN '" & strPath & "');"
DoCmd.RunSQL strSql
End If

strSql = "INSERT INTO tblReshte ( ReshteName, RetshteCode, ReshteI ) " & _
"SELECT ReshteName, RetshteCode, ReshteI " & _
"FROM tblReshte IN '" & strPath & "' WHERE RetshteCode Not IN(SELECT RetshteCode FROM tblReshte);"
DoCmd.RunSQL strSql
Exit Sub
ErrHandler:
If Err = 3078 Then
MsgBox "جدول رشته ها در فایل انتخاب شده وجود ندارد"
Else
MsgBox "Error"
End If
End Sub

azadich
پنج شنبه 26 اردیبهشت 1392, 07:21 صبح
با سلام ، برای فارسی کردن پیغام پیوستی زیر چه کار باید بکنیم؟ممنون میشم

Abbas Amiri
پنج شنبه 26 اردیبهشت 1392, 21:34 عصر
با سلام ، برای فارسی کردن پیغام پیوستی زیر چه کار باید بکنیم؟ممنون میشم

خصوصیت AllowZeroLength فیلدهای نوع Text در جدول مربوطه را برابر Yes قرار دهید، ببینید درست می شود.

azadich
پنج شنبه 26 اردیبهشت 1392, 23:27 عصر
ببخشید باز هم همان پیغام آمد نمیشه فارسی کرد؟

Abbas Amiri
پنج شنبه 26 اردیبهشت 1392, 23:33 عصر
ببخشید باز هم همان پیغام آمد نمیشه فارسی کرد؟
درصورت امکان نمونه قرار دهید

azadich
پنج شنبه 26 اردیبهشت 1392, 23:43 عصر
این هم نمونه،ببینید موقعی که نام مدرسه در فایلی که می خواهیم از آن اطلاعات وارد کنیم خالی باشه این پیغام میدهومی خوام وقتی نام مدرسه خالی باشه اطلاعات وارد نشه و پیغام بده مثلا فایل اشکال دارد

Abbas Amiri
جمعه 27 اردیبهشت 1392, 11:12 صبح
این هم نمونه،ببینید موقعی که نام مدرسه در فایلی که می خواهیم از آن اطلاعات وارد کنیم خالی باشه این پیغام میدهومی خوام وقتی نام مدرسه خالی باشه اطلاعات وارد نشه و پیغام بده مثلا فایل اشکال دارد

رمز محیط VBE را یا دراینجا و یادر پیغام خصوصی قراردهید.

azadich
جمعه 27 اردیبهشت 1392, 21:14 عصر
616389aff رمز فایل پیوستی

Abbas Amiri
جمعه 27 اردیبهشت 1392, 22:51 عصر
سلام
در بخشی از روال مربوط به انتقال تغییرات زیر را بدهید :


strSql = "INSERT INTO 3 ( madrese, q, dini, arabi, emla, ensha, qfarsi, ej, tar, gog, ez, qz, ryazi, olom, herfe, honar, var, par, dq, ddini, darabi, demla, densa, dfarsi, dej, dtar, dgog, dez, dqz, dryazi, dolom, dherfe, dhonar, dvar, dpar, tq, tdini, tarabi, ttemf, tensha, tfarsi, tej, ttar, tgog, temz, tqz, tryazi, tolom, therfe, thonar, tvar, tpar, tq1, tdini1, tarabi1, temf1, tensa1, tfarsi1, tej1, ttar1, tgog1, temz1, tqz1, tryazi1, tolom1, therfe1, thonar1, tvar1, tpar1, qq, qdini, qarabi, qemla, qensa, qafarsi, qej, qtar, qgog, qqz, qemz, qryazi, qolom, qherfe, qhonar, qvar, qpar, qaq1, qadini1, qaarabi1, qaemf1, qensa1, qafarsi1, qej1, qtar1, qgog1, qqz1, qemz1, qryazi1, qolom1, qherfe1, qhonar1, qvar1, qpar1, kol91, kol92, kolq91, kolq92, t91, t92, q91, q92, m91, m92 ) " & _
"SELECT madrese, q, dini, arabi, emla, ensha, qfarsi, ej, tar, gog, ez, qz, ryazi, olom, herfe, honar, var, par, dq, ddini, darabi, demla, densa, dfarsi, dej, dtar, dgog, dez, dqz, dryazi, dolom, dherfe, dhonar, dvar, dpar, tq, tdini, tarabi, ttemf, tensha, tfarsi, tej, ttar, tgog, temz, tqz, tryazi, tolom, therfe, thonar, tvar, tpar, tq1, tdini1, tarabi1, temf1, tensa1, tfarsi1, tej1, ttar1, tgog1, temz1, tqz1, tryazi1, tolom1, therfe1, thonar1, tvar1, tpar1, qq, qdini, qarabi, qemla, qensa, qafarsi, qej, qtar, qgog, qqz, qemz, qryazi, qolom, qherfe, qhonar, qvar, qpar, qaq1, qadini1, qaarabi1, qaemf1, qensa1, qafarsi1, qej1, qtar1, qgog1, qqz1, qemz1, qryazi1, qolom1, qherfe1, qhonar1, qvar1, qpar1, kol91, kol92, kolq91, kolq92, t91, t92, q91, q92, m91, m92 " & _
"FROM 3 IN '" & strPath & "' WHERE Not IsNull(madrese) AND madrese Not IN(SELECT madrese FROM 3);"
DoCmd.RunSQL strSql
Refresh
Exit Sub
ErrHandler:
If Err = 3078 Then
MsgBox "ÌÏæá ÇØáÇÚÇÊ Çíä Çíå ÏÑ ÝÇíá ÇäÊÎÇÈ ÔÏå æÌæÏ äÏÇÑÏ", , "ÎØÇ"
ElseIf Err <> 2501 Then
MsgBox "ÇØáÇÚÇÊ Çíä Çíå íÇ ÑÔÊå ÏÑ Çíä ÝÇíá æÌæÏ äÏÇÑÏ", , "ÎØÇ"
End If
End Sub



چنانچه فیلد مدرسه خالی باشد ، چیزی انتقال نمی یابد .
ضمن اینکه فیلد مدرسه کلید اصلی جدول است ، خصوصیت Allow Zero Length vh fvhfv را No قراردهید ، تا اصلا چنین مشکلی بوجود نیاید .