PDA

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



iransim
شنبه 26 فروردین 1402, 22:26 عصر
سلام دوستان
لطفا ی نگاه به برنامه ضمیمه کنید و ممنون میشم راهنمائی بفرمائید .
من در فرم صدور و دریافت اطلاعات در قسمت صدور اطلاعات به صورت فایل اکسل ، ابتدا از گزینه مربوطه اسم جدولی رو که میخواهم از آن پشتیبان بگیرم انتخاب میکنم و سپس فایل پشتیبان از همان جدول تهیه میشود

حالا مشکل من در قسمت دریافت یا بروزرسانی جدول از فایل اکسل هست ، چطور میتونم کاری کنم که مثل قسمت پشتیبان گیری ابتدا جدولی رو که میخوام بروزرسانی کنم از یه لیست انتخاب و در مرحله بعد فایل اکسل مربوط به اون رو جستجو و بعد عملیات بروز رسانی به روی همون جدول انجام بشه یا به عبارتی (در بروز رسانی انتخاب جدول و فایل اکسل مورد نظر به انتخاب کاربر باشه )

ممنون از لطف همه دوستان

iransim
یک شنبه 27 فروردین 1402, 23:32 عصر
دوستان عزیز اگه لطف کنن و راهنمائی بفرمایند بسیار بسیار ممنون میشم :خجالت:

amirzazadeh
چهارشنبه 30 فروردین 1402, 09:40 صبح
سلام و روز به خیر، روش کار مثل همون نمونه هست فقط نام جدول رو از کمبو استخراج می کنید.



Dim strTableName As String
strTableName = txtTblName

iransim
پنج شنبه 31 فروردین 1402, 10:28 صبح
سلام و روز به خیر، روش کار مثل همون نمونه هست فقط نام جدول رو از کمبو استخراج می کنید.



Dim strTableName As String
strTableName = txtTblName


سلام و عرض ادب
ممنون از توجه و راهنمائی جنابعالی
با عرض پوزش ، من متوجه فرمایش شما در خصوص مثل نمونه هست نشدم ، چون گزینه اول برای خروجی گرفتن هست و مورد درخواستی و مورد سئوال من برای دریافت اطلاعات از فایل اکسل هست
با احترام امکانش هست روی فایل ارسالی موارد مورد نظر رو پیاده سازی نمائید ؟
بسیار سپاسگزارم

amirzazadeh
دوشنبه 04 اردیبهشت 1402, 09:39 صبح
سلام و عرض ادب
ممنون از توجه و راهنمائی جنابعالی
با عرض پوزش ، من متوجه فرمایش شما در خصوص مثل نمونه هست نشدم ، چون گزینه اول برای خروجی گرفتن هست و مورد درخواستی و مورد سئوال من برای دریافت اطلاعات از فایل اکسل هست
با احترام امکانش هست روی فایل ارسالی موارد مورد نظر رو پیاده سازی نمائید ؟
بسیار سپاسگزارم
سلام، کد شما رو به این شکل نوشتم، ببینید مشکل برطرف شده.


Private Sub Command15_Click()
'------------------------------
On Error GoTo Problem
'------------------------------
Dim f As Object
Dim strFile As String
Dim varItem As Variant
Set f = Application.FileDialog(3)
If f.Show Then
For Each varItem In f.SelectedItems
strFile = Dir(varItem)
Next
If Not IsNull(txtTblName) Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, txtTblName, strFile, True
Me.Requery
MsgBox "˜ÇÑÈÑ ÑÇãí :ÇØáÇÚÇÊ ÇÒ ÝÇíá ǘÓá ÏÑíÇÝÊ ÔÏ", vbOKOnly + vbInformation + vbMsgBoxRight, "íÇã Èå ˜ÇÑÈÑ"
Else
MsgBox "لطفا نام جدول را انتخاب کنید", vbOKOnly + vbInformation + vbMsgBoxRight, "íÇã Èå ˜ÇÑÈÑ"
txtTblName.SetFocus
Exit Sub
End If
End If
'------------------
Problem:
If Err.Number = 2391 Then
MsgBox "˜ÇÑÈÑ ÑÇãí : ÝíáÏåÇí ÌÏæá ãÈÏÇ æ ãÞÕÏ åãÎæÇäí äÏÇÑÏ", vbInformation + vbMsgBoxRight + vbOKOnly, "ÇØÜÜáÇÚ ÑÓÇäí"
Else
MsgBox "ÚãáíÇÊ ÏÑÎæÇÓÊí ÈÇ ãæÝÞíÊ ÇäÌÇã ÔÏ ", vbInformation + vbMsgBoxRight + vbOKOnly, " ÇØÜÜáÇÚ ÑÓÇäí"
End If

End Sub

iransim
سه شنبه 05 اردیبهشت 1402, 15:33 عصر
سلام، کد شما رو به این شکل نوشتم، ببینید مشکل برطرف شده.


Private Sub Command15_Click()
'------------------------------
On Error GoTo Problem
'------------------------------
Dim f As Object
Dim strFile As String
Dim varItem As Variant
Set f = Application.FileDialog(3)
If f.Show Then
For Each varItem In f.SelectedItems
strFile = Dir(varItem)
Next
If Not IsNull(txtTblName) Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, txtTblName, strFile, True
Me.Requery
MsgBox "˜ÇÑÈÑ ÑÇãí :ÇØáÇÚÇÊ ÇÒ ÝÇíá ǘÓá ÏÑíÇÝÊ ÔÏ", vbOKOnly + vbInformation + vbMsgBoxRight, "íÇã Èå ˜ÇÑÈÑ"
Else
MsgBox "لطفا نام جدول را انتخاب کنید", vbOKOnly + vbInformation + vbMsgBoxRight, "íÇã Èå ˜ÇÑÈÑ"
txtTblName.SetFocus
Exit Sub
End If
End If
'------------------
Problem:
If Err.Number = 2391 Then
MsgBox "˜ÇÑÈÑ ÑÇãí : ÝíáÏåÇí ÌÏæá ãÈÏÇ æ ãÞÕÏ åãÎæÇäí äÏÇÑÏ", vbInformation + vbMsgBoxRight + vbOKOnly, "ÇØÜÜáÇÚ ÑÓÇäí"
Else
MsgBox "ÚãáíÇÊ ÏÑÎæÇÓÊí ÈÇ ãæÝÞíÊ ÇäÌÇã ÔÏ ", vbInformation + vbMsgBoxRight + vbOKOnly, " ÇØÜÜáÇÚ ÑÓÇäí"
End If

End Sub


سلام و عرض ادب مجدد
دست شما درد نکنه ،بسیار عالی ، موارد در خصوص انتخاب جدول مقصد و فایل اکسل مورد نظر دقیقا همونی بود که مد نظرم بود :تشویق: ، فقط دو تا سوال داشتم که اگه محبت کنید بازم ممنون لطف و توجه شما خواهم بود
1 - سوال اول اینکه اگر بخواهیم که در بروزرسانی رگوردهای تکراری در بانک مقصد تکرار نشود کدها چه تغییری میکند ؟
2 - سوال دوم اینکه اگر بخواهیم که در بروزرسانی رکوردهای موجود در بانک مقصد کامل حذف و مقادیر در فایل اکسل جایگزین شود کدها به چه صورتی خواهد بود ؟
البته ی نکته هم عرض کنم که در موارد فوق اگر جدول ما با جدول دیگری در ارتباط باشد امکان این بروزرسانی ها ( 1 و 2 ) وجود دارد ؟
بازم ممنون از حسن توجه شما

amirzazadeh
چهارشنبه 06 اردیبهشت 1402, 22:20 عصر
سلام و عرض ادب مجدد
دست شما درد نکنه ،بسیار عالی ، موارد در خصوص انتخاب جدول مقصد و فایل اکسل مورد نظر دقیقا همونی بود که مد نظرم بود :تشویق: ، فقط دو تا سوال داشتم که اگه محبت کنید بازم ممنون لطف و توجه شما خواهم بود
1 - سوال اول اینکه اگر بخواهیم که در بروزرسانی رگوردهای تکراری در بانک مقصد تکرار نشود کدها چه تغییری میکند ؟
2 - سوال دوم اینکه اگر بخواهیم که در بروزرسانی رکوردهای موجود در بانک مقصد کامل حذف و مقادیر در فایل اکسل جایگزین شود کدها به چه صورتی خواهد بود ؟
البته ی نکته هم عرض کنم که در موارد فوق اگر جدول ما با جدول دیگری در ارتباط باشد امکان این بروزرسانی ها ( 1 و 2 ) وجود دارد ؟
بازم ممنون از حسن توجه شما
سلام و وقت به خیر
1- در این صورت باید از رکوردست استفاده بشه و بعد از کنترل فیلد کلیدی هر رکورد، عملیات افزودن به جدول اتفاق بیفته.
2- مورد 2 هم مشکلی نداره،میتونیم ابتدا با کامند sql تمام اطلاعات جدول رو حذف بکنیم و بعد اطلاعات جدید رو به جدول منتقل کنیم.
برای مورد سوم جواب نسبی هست .به این معنی که برای افزودن رکورد منعی نداریم، ولی درصورت حذف رکورد در جدول اصلی باید رکوردهای متناظر از جدول مرتبط هم حذف بشه.
......................
موفق باشید

iransim
جمعه 08 اردیبهشت 1402, 11:49 صبح
سلام و وقت به خیر
1- در این صورت باید از رکوردست استفاده بشه و بعد از کنترل فیلد کلیدی هر رکورد، عملیات افزودن به جدول اتفاق بیفته.
2- مورد 2 هم مشکلی نداره،میتونیم ابتدا با کامند sql تمام اطلاعات جدول رو حذف بکنیم و بعد اطلاعات جدید رو به جدول منتقل کنیم.
برای مورد سوم جواب نسبی هست .به این معنی که برای افزودن رکورد منعی نداریم، ولی درصورت حذف رکورد در جدول اصلی باید رکوردهای متناظر از جدول مرتبط هم حذف بشه.
......................
موفق باشید

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

amirzazadeh
سه شنبه 12 اردیبهشت 1402, 10:40 صبح
سلام
با عرض پوزش از تاخیر در پاسخ لطفا فایل ضمیمه رو ببینید:

iransim
سه شنبه 12 اردیبهشت 1402, 23:01 عصر
سلام
با عرض پوزش از تاخیر در پاسخ لطفا فایل ضمیمه رو ببینید:

سلام و عرض ادب و تشکر مجدد
دوست عزیز وقتی جدول مورد نظر را انتخاب میکنم و دکمه ( بازیابی اطلاعات از فایل اکسل به جدول مورد نظر بدون حذف قبلی ) رو میزنم روی فرم جدید با انتخاب گزینه های ( بروز رساني داده ها ) یا ( استخراج داده ) با خطای طبق تصویر ارسالی مواجه میشوم

amirzazadeh
چهارشنبه 13 اردیبهشت 1402, 09:36 صبح
سلام و عرض ادب و تشکر مجدد
دوست عزیز وقتی جدول مورد نظر را انتخاب میکنم و دکمه ( بازیابی اطلاعات از فایل اکسل به جدول مورد نظر بدون حذف قبلی ) رو میزنم روی فرم جدید با انتخاب گزینه های ( بروز رساني داده ها ) یا ( استخراج داده ) با خطای طبق تصویر ارسالی مواجه میشوم

سلام و صبح به خیر، من این خطا رو دریافت نمی کنم ولی به هر حال این دو روش رو امتحان کنید.
1- روی یک کامپیوتر دیگه برنامه رو تست کنید.
2- اگر باز هم با همون مورد روبرو شدید برنامه رو با نگه داشن کلید شیفت بازکنید و به محیط کدنویسی وارد بشید(با کلید کنترل و جی ctl+g) و یک بار برنامه رو کامپایل کنید. اگر بدون خطا کامپایل شد، از برنامه خارج بشید و دوباره اجرا کنید.
در ضمن فراموش نکنید که رفرنس ado2.8 رو به برنامه اضافه کنید.
.......................
موفق باشید.

iransim
چهارشنبه 13 اردیبهشت 1402, 22:13 عصر
سلام و صبح به خیر، من این خطا رو دریافت نمی کنم ولی به هر حال این دو روش رو امتحان کنید.
1- روی یک کامپیوتر دیگه برنامه رو تست کنید.
2- اگر باز هم با همون مورد روبرو شدید برنامه رو با نگه داشن کلید شیفت بازکنید و به محیط کدنویسی وارد بشید(با کلید کنترل و جی ctl+g) و یک بار برنامه رو کامپایل کنید. اگر بدون خطا کامپایل شد، از برنامه خارج بشید و دوباره اجرا کنید.
در ضمن فراموش نکنید که رفرنس ado2.8 رو به برنامه اضافه کنید.
.......................
موفق باشید.

سلام و عرض ادب
آقا با اضافه کردن ADO 2.8 مشکل حل شد ، بازم بینهایت سپاسگزارم و ممنون بابت پیگیری شما