PDA

View Full Version : اضافه کردن ( Update ) رکورد به جدول



iransim
دوشنبه 19 فروردین 1387, 22:33 عصر
سلام به دوستان
من در جدولم قسمتی از رکوردها در یک سیستم وارد شده است مثلا" از رکورد 1 تا 50 در سیستم دیگر در نسخه کپی همان برنامه رکوردهای 50 تا 100 وارد شده است حال می خواهم رکوردهای بانک یکی را به دیگری اضافه نمایم به صورتی که در بانک اضافه شده رکوردهای 1 تا 100 را داشته باشم حال

با توجه به اینکه هر دو برنامه و بانکهای آنها یکسان می باشد چگونه می توانم این کار را انجام دهم ؟
ممنون

nazemmazem
سه شنبه 20 فروردین 1387, 00:07 صبح
با کپی و پیست اینکار را بکنید
روی جدول دوم Ctrl+A بزنید و بعد Ctrl+C که همه ا ش کپی شود بعد بیاید توی جدول اول روی رکورد جدید (نکته اش همینجاست) کل رکورد جدید را با کلیک روی فلش انتخاب رکورد انتخاب کنید و بعد Ctrl+V بزنید
راه دوم این است که از دو تا جدول یک کوئری Union بسازید و بعد آن را sava as table کنید
راه سوم این است که یک دستور sql بنویسید و مقادر جدول دوم را به اولی اضافه کنید
با این دستور

Dim insert_into As String
insert_into = " insert into table1 (Field1,field2,...)" & _
" select Field1,field2,... from table2"
DoCmd.RunSQL insert_into

مهدی قربانی
سه شنبه 20 فروردین 1387, 08:30 صبح
سلام
در بانکی که می خوای اطلاعات از اون به بانک دیگه منتقل بشه یه کوئری Append بساز و در کادر Append To گزینه Another Database رو انتخاب کن و بانک مقصد رو مشخص کن بعد در کامبو بالایی جدول مورد نظر در بانک مقصد رو مشخص کن حالا در صورت اجرای کوئری اطلاعات از مبداء به مقصد منتقل میشه .

iransim
جمعه 23 فروردین 1387, 12:00 عصر
سلام
در بانکی که می خوای اطلاعات از اون به بانک دیگه منتقل بشه یه کوئری Append بساز و در کادر Append To گزینه Another Database رو انتخاب کن و بانک مقصد رو مشخص کن بعد در کامبو بالایی جدول مورد نظر در بانک مقصد رو مشخص کن حالا در صورت اجرای کوئری اطلاعات از مبداء به مقصد منتقل میشه .

مهدی عزیز سلام
من هیچگونه اطلاعاتی در خصوص کوئری Append و روش ساخت آن ندارم میشه لطف کنید و نمونه بگذارید .
تشکر فراوان

مهدی قربانی
جمعه 23 فروردین 1387, 21:01 عصر
سلام
1 . یک کوئری از جدولی که می خوای اطلاعاتش رو منتقل کنی بساز و فیلدها رو در اون کوئری تعیین کن
2 . در نمای Design کوئری بوسیله نوار ابزار نوع کوئری رو Append تعیین کن .
3 . در کادر Append To که در پست قبلیم گفتم اول گزینه Another Database رو انتخاب و بانک مقصد رو مشخص کن و بعد از کامبوی Table Name نام جدول مقصد رو مشخص و نهایتاً Ok رو انتخاب کن .
نمونه ها رو در درایو C کپی و فایل AppendSample1 رو باز کن به کامند باتون انتقال اطلاعات و Query1 که از نوع Append هست دقت کن .

iransim
یک شنبه 25 فروردین 1387, 02:06 صبح
سلام
1 . یک کوئری از جدولی که می خوای اطلاعاتش رو منتقل کنی بساز و فیلدها رو در اون کوئری تعیین کن
2 . در نمای Design کوئری بوسیله نوار ابزار نوع کوئری رو Append تعیین کن .
3 . در کادر Append To که در پست قبلیم گفتم اول گزینه Another Database رو انتخاب و بانک مقصد رو مشخص کن و بعد از کامبوی Table Name نام جدول مقصد رو مشخص و نهایتاً Ok رو انتخاب کن .
نمونه ها رو در درایو C کپی و فایل AppendSample1 رو باز کن به کامند باتون انتقال اطلاعات و Query1 که از نوع Append هست دقت کن .


مهدی جان سلام
با تشکر فراوان به خاطر نمونه ارسالی، فقط یک سئوال
این نمونه ایا رکوردهای تکراری را نیز اضافه می کند یا اینکه از انها رد شده و غیر تکراری را به جدول مقصد اضافه می کند ؟
ممنون

مهدی قربانی
یک شنبه 25 فروردین 1387, 08:27 صبح
این نمونه ایا رکوردهای تکراری را نیز اضافه می کند سلام
بله منتها اگر جدول مقصد فیلد کلید داشته باشه اونوقت اجازه ثبت اطلاعات تکراری رو نمی ده یه راه حل اینه که در دیتابیس مبداء یک کوئری Delete هم داشته باشی و بعد از اجرای کوئری Append اونرو اجرا کنی تا رکوردهای منتقل شده رو از جدول مبداء حذف کنه ضمناً شما در کوئریهای Append‌ و Delete‌شما می تونی شرط قائل بشی تا رکوردهایی که حائز شروط هستند منتقل و بعد حذف بشن .
ضمناً می تونی از نمونه های موجود در این تاپیکها ایده بگیری :
http://barnamenevis.org/forum/showthread.php?t=70036

http://barnamenevis.org/forum/showthread.php?t=69025

iransim
یک شنبه 25 فروردین 1387, 23:22 عصر
سلام
بله منتها اگر جدول مقصد فیلد کلید داشته باشه اونوقت اجازه ثبت اطلاعات تکراری رو نمی ده یه راه حل اینه که در دیتابیس مبداء یک کوئری Delete هم داشته باشی و بعد از اجرای کوئری Append اونرو اجرا کنی تا رکوردهای منتقل شده رو از جدول مبداء حذف کنه ضمناً شما در کوئریهای Append‌ و Delete‌شما می تونی شرط قائل بشی تا رکوردهایی که حائز شروط هستند منتقل و بعد حذف بشن .
ضمناً می تونی از نمونه های موجود در این تاپیکها ایده بگیری :
http://barnamenevis.org/forum/showthread.php?t=70036

http://barnamenevis.org/forum/showthread.php?t=69025

مهدی جان سلام
دستت درد نکنه منتظر ایمیل شما هستم
Mbasouli@yahoo.com

abdoreza57
پنج شنبه 12 دی 1392, 20:43 عصر
سلام من نمونه ای تهیه کردم که مثال پست 5 را اگه بشه تغییر بدم قابل استفاده میشه ............. میخوام رکورد خاصی ، به جدول AppendSample2 اضافه بشه ! منتها به عنوان رکورد جدید ... البته نمونه خودم فیلد اصلی اتونامبر هست و میخوام اطلاعات اون فیلد مورد نظر به عنوان رکورد جدید به AppendSample2 اضافه بشه .... ممنون میشم اگه دوستان ارهنمایی کنند خدا نگهدار

alirezabahrami
جمعه 13 دی 1392, 16:24 عصر
سلام من نمونه ای تهیه کردم که مثال پست 5 را اگه بشه تغییر بدم قابل استفاده میشه ............. میخوام رکورد خاصی ، به جدول AppendSample2 اضافه بشه ! منتها به عنوان رکورد جدید ... البته نمونه خودم فیلد اصلی اتونامبر هست و میخوام اطلاعات اون فیلد مورد نظر به عنوان رکورد جدید به AppendSample2 اضافه بشه .... ممنون میشم اگه دوستان ارهنمایی کنند خدا نگهدار

سلام آقا رضا دوست بزرگوار من!
نمونه ضمیمه را ملاحظه کن !
با توجه به خواسته خودت که میخواهید رکورد خاصی را به بانک اطلاعاتی اضافه نمائید یک تکست باکس با عنوان شماره رکورد وجود دارد که شما باید شماره رکورد مورد نظرت را در آن وارد نمائید (این شماره در واقع شماره اتونامبر رکورد مورد نظر در جدول شماست).
دراین نمونه ابتدا باید آدرس بانک اطلاعاتی (همان بانک اطلاعاتی که قرار است از داخل برنامه ات رکوردی را به جدول آن اضافه نمائید) را در قسمت آدرس وارد کنید .
اینکار را برای این انجام دادم که اگر آدرس بانک اطلاعاتی تغییر کرد مجبور نشوید در کدهای برنامه تغییری بدهید . و مورد دیگری که لازم است در مورد آدرس بانک اطلاعاتی عرض کنم این است که بعد از وارد کردن آدرس برنامه و یا تغییر آن ، ذخیره میشود (در دفعات بعد مجبور نیستید آدرس را وارد کنید)
ضمناً اینکه گفته بودید وقتی برنامه باز است عمل انتقال اطلاعات به درستی انجام میشود و وقتی برنامه بسته است این عمل صورت نمی گیرد باید عرض کنم که اتفاقاً موضوع بر عکس است . اگر بانک اطلاعات باز باشد (مثلاً توسط کاربر دیگر باز شده ) شما نمی توانید رکوردی را از برنامه خودت به آن اضافه کنید یاحتی تغییراتی در آن بدهید و اگر چنین کاری را بکنید خطای : بانک اطلاعاتی باز است یا توسط کاربر دیگر در حال استفاده می باشد صادر میشود . پس در نتیجه در زمان انتقال داده به بانک اطلاعاتی ، بانک باید بسته و بلااستفاده باشد.
ارادتمند :بهرامی

abdoreza57
جمعه 13 دی 1392, 19:48 عصر
سلام آقا ابراهیم ، دوست و برادر بزرگوارم
این مطلب را خدا گواهه قلبا میگم , , , خیلی دوستتون دارم
هر چند تو این دنیای مجازی ! ندیدمتون . قطعا تاثیری که انسانها بر روی دنیای پیرامون خود میگذارند نشاندهنده بزرگی یا کوچکی آنهاست : این صالحات باقیات که تو فروم اکسس به جا گذاشتید معرف شماست .
واقعا میگم بهتون غبطه میخورم و برام یه Sample ! هستید .

امام على عليه السلام: أَغبَطُ النّاسِ المُسارِعُ إِلَى الخَيراتِ؛ شايسته ترين مردم كه مورد غبطه قرار گيرد كسى است كه براى انجام كار خير سبقت مى گيرد.
همین موضوع را میشه تو امظاء شما دید ...

نمونه تون مثل همیشه عالی بود و راهگشا ضمنا باید عرض کنم که متاسفانه منظورم را تو پاراگراف آخری نتونستم برسونم و اونم این بود که : برای انتقال رکورد مورد نظرم برنامه را باز میکردم و جدول (تیبل) و رکورد را کپی و بعد رو برنامه اصلی در رکورد جدید تیبل پست میکردم !!!

که شما تو نمونه تون خوشبختانه با ظرافت تمام به همه موارد و ویژگیهای عالی که در نظر گرفتید اشاره کردید و اصلاح نمودید

ممنونم از وقتی که گذاشتید و لطفی که به من دارید

خدا نگهدار

abdoreza57
شنبه 14 دی 1392, 22:26 عصر
ُسلام جناب بهرامی نمیشه کاری کرد همه فیلدهای اون رکورد بدون ذکر همه فیلدها تو کد نویسی منتقل بشه چون برای چند تا جدول نیاز هست این کار را انجام بدم که فیلد هاش زیاده خواستم بدونم میشه با کد نویسی تعریف کرد که کل فیلدهای فلان رکورد جدول منتقل بشه ؟ خدا نگهدار

alirezabahrami
یک شنبه 15 دی 1392, 20:31 عصر
ُسلام جناب بهرامی نمیشه کاری کرد همه فیلدهای اون رکورد بدون ذکر همه فیلدها تو کد نویسی منتقل بشه چون برای چند تا جدول نیاز هست این کار را انجام بدم که فیلد هاش زیاده خواستم بدونم میشه با کد نویسی تعریف کرد که کل فیلدهای فلان رکورد جدول منتقل بشه ؟ خدا نگهدار
سلام رضا جان !

در اضافه نمودن رکورد از طریق Append Query قاعدتاً باید نام فیلد ها و فیلدهای مقابل در جدول دیگر ذکر شود .ولی با این حال من برای امتحان این عمل ، از کد زیر استفاده کردم ولی نمیدانم ایراد کار از کجاست که هیچ رکوردی اضافه نمیشود . و جالب اینکه در استفاده از کد فوق هیچ خطائی هم صادر نمیشود که فهمیده شود ایراد از کجاست .
دوساعتی است که با این کد دارم کلنجار میرم ولی ....
درهرحال از دوست بزرگوارم جناب آقای امیری عزیزخواهش می کنم در صورت مشاهده این پست از این تاپیک ، این کد را امتحان بکنند شاید با توجه به معلومات و تجارب ارزنده ایشان ایراد آن مشخص شود
البته درحین کار حدس زدم که شاید از طریق انتخاب رکوردهای مورد نظر در جدول برنامه و اد نمودن آن به جدول بانک اطلاعاتی از طریق کد فوق این کار امکان پذیر باشد ولی این روش هم جواب نداد (البته با استفاده از این روش رکورد یا رکوردهای خالی در جدول بانک اطلاعاتی ایجاد میشود).
کد فوق را در رویداد کلیک یک کمند باتن در فرم نمونه قبلی وارد شود .

یا علی


Dim dbs As Database
Set dbs = OpenDatabase(Txtfile_Sourse)
dbs.Execute "INSERT INTO table1 SELECT * FROM table1 WHERE (((Table1.ID)=" & TXTID & "));"
dbs.Close

Abbas Amiri
یک شنبه 15 دی 1392, 22:15 عصر
سلام رضا جان !

در اضافه نمودن رکورد از طریق Append Query قاعدتاً باید نام فیلد ها و فیلدهای مقابل در جدول دیگر ذکر شود .ولی با این حال من برای امتحان این عمل ، از کد زیر استفاده کردم ولی نمیدانم ایراد کار از کجاست که هیچ رکوردی اضافه نمیشود . و جالب اینکه در استفاده از کد فوق هیچ خطائی هم صادر نمیشود که فهمیده شود ایراد از کجاست .
دوساعتی است که با این کد دارم کلنجار میرم ولی ....
درهرحال از دوست بزرگوارم جناب آقای امیری عزیزخواهش می کنم در صورت مشاهده این پست از این تاپیک ، این کد را امتحان بکنند شاید با توجه به معلومات و تجارب ارزنده ایشان ایراد آن مشخص شود
البته درحین کار حدس زدم که شاید از طریق انتخاب رکوردهای مورد نظر در جدول برنامه و اد نمودن آن به جدول بانک اطلاعاتی از طریق کد فوق این کار امکان پذیر باشد ولی این روش هم جواب نداد (البته با استفاده از این روش رکورد یا رکوردهای خالی در جدول بانک اطلاعاتی ایجاد میشود).
کد فوق را در رویداد کلیک یک کمند باتن در فرم نمونه قبلی وارد شود .

یا علی


Dim dbs As Database
Set dbs = OpenDatabase(Txtfile_Sourse)
dbs.Execute "INSERT INTO table1 SELECT * FROM table1 WHERE (((Table1.ID)=" & TXTID & "));"
dbs.Close



سلام

کد زیر را امتحان کنید :

dbs.Execute "INSERT INTO table1 SELECT * FROM table1 IN '" & strExternalDbPath & "' WHERE (((ID)=" & TXTID & "));"

abdoreza57
یک شنبه 15 دی 1392, 22:47 عصر
سلام

امام سجاد می فرمایند:
حق كسى كه به تو نيكى كرده ، اين است كه از او تشكر كنى و نيكيش را به زبان آورى و از وى به خوبى ياد كنى و ميان خود و خداى عزوجل برايش خالصانه دعا كنى ، هرگاه چنين كردى بى گمان پنهانى و آشكارا از او تشكر كرده اى . سپس اگر روزى توانستى نيكى او را جبران كنى ، جبران كن .


جناب بهرامی ضمن تشکر از زحمتی که کشیدید و واقعا شرمنده شدم که این همه وقتتون را گرفت همچنین آقای امیری که ملاحظه نمودند

ولی علی رقم تغییری که انجام دادند متاسفانه با شرح فوق جواب نمیده و همون شد!

Abbas Amiri
یک شنبه 15 دی 1392, 22:58 عصر
سلام

امام سجاد می فرمایند:
حق كسى كه به تو نيكى كرده ، اين است كه از او تشكر كنى و نيكيش را به زبان آورى و از وى به خوبى ياد كنى و ميان خود و خداى عزوجل برايش خالصانه دعا كنى ، هرگاه چنين كردى بى گمان پنهانى و آشكارا از او تشكر كرده اى . سپس اگر روزى توانستى نيكى او را جبران كنى ، جبران كن .


جناب بهرامی ضمن تشکر از زحمتی که کشیدید و واقعا شرمنده شدم که این همه وقتتون را گرفت همچنین آقای امیری که ملاحظه نمودند

ولی علی رقم تغییری که انجام دادند متاسفانه با شرح فوق جواب نمیده و همون شد!

اصلاح شد . در صورت مشکل نمونه خودتان را آپ کنید

Abbas Amiri
دوشنبه 16 دی 1392, 00:04 صبح
سلام

متاسفانه هر کار کردم فایل را نتونستم آپلود کنم قسمت مدیریت ضمیمه صفحه را باز نمیکنه !!!
ولی نمونه خود آقای بهرامی پست 10 واقعا عالیه میتونید رو اون برنامه تست کنید

خدا نگهدار

نمونه بالا که آقای بهرامی خیلی عالی تهیه کرده بودند را امتحان کردم . ابتدا جدول Table1 رو در دیتابیس مقصد خالی کردم و بعد ID شماره 3 رو تایپ و بعد از انتخاب دیتابیس آنرا اجرا کردم . فیلد a,b در مقصد کپی شده بود.

Abbas Amiri
سه شنبه 17 دی 1392, 12:13 عصر
سلام متاسفانه هر کار کردم فایل را نتونستم آپلود کنم قسمت مدیریت ضمیمه صفحه را باز نمیکنه !!! ولی نمونه خود آقای بهرامی پست 10 واقعا عالیه میتونید رو اون برنامه تست کنید حتی مطابق کد آقای بهرامی به زحمت همه فیلدها را آوردم ولی نتیجه اش این ارور شد sSql = "INSERT INTO asli ( num, [ghad-s], [kamar-s], [basan-s], [ran-s], [zano-s], [dampa-s], [fagh-s], [mod-s], [adad-s], [not-s], [ghad-k], [shane-k], [sine-k], [kamar-k], [astin-k], [takamar-k], [mod-k1], [mod-k2], [mod-k3], [mod-k4], [adad-k], [not-k], [ghad-p], [shane-p], [sine-p], [astin-p], [yaghe-p], [moch-p], [mod-p1], [mod-p5], [adad-p], [not-p], nam, famil, tel, tel2, parche, mozd, pish, etmam, check, checkab, dateback, [date-rent], [date-pay], takhfif, noepay, tavalod, salgard ) _ IN '" & Txtfile_Sourse & "' SELECT asli.num, asli.[ghad-s], asli.[kamar-s], asli.[basan-s], asli.[ran-s], asli.[zano-s], asli.[dampa-s], asli.[fagh-s], asli.[mod-s], asli.[adad-s], asli.[not-s], asli.[ghad-k], asli.[shane-k], asli.[sine-k], asli.[kamar-k], asli.[astin-k], asli.[takamar-k], asli.[mod-k1], asli.[mod-k2], asli.[mod-k3], asli.[mod-k4], asli.[adad-k], asli.[not-k], asli.[ghad-p], asli.[shane-p], asli.[sine-p], asli.[astin-p], asli.[yaghe-p], asli.[moch-p], asli.[mod-p1], asli.[mod-p5], asli.[adad-p], asli.[not-p], asli.nam, asli.famil, asli.tel, asli.tel2, asli.parche, asli.mozd, asli.pish, asli.etmam, asli.check, asli.checkab, asli.dateback, asli.[date-rent], asli.[date-pay], asli.takhfif, asli.noepay, asli.tavalod, asli.salgard" _ FROM asli WHERE (((asli.num)=" & TXTID & "));" DoCmd.RunSQL sSql خدا نگهدار

شما که قصد انتقال تمام فیلدها را دارید چرا از دستور ساده تر و کلی استفاده نمی کنید:

sSql = "INSERT INTO asli IN '" & Txtfile_Sourse & "' SELECT * FROM asli WHERE num=" & TXTID

abdoreza57
سه شنبه 17 دی 1392, 14:48 عصر
سلام آره دقیفا همین را میخواستم و بی نهایت ممنونم جواب داد .................................................. ..................................یه سوال جناب امیری : چرا ابزارهای ویرایش (رنگ و اندازه و مدیریت ضمیمه و تک کد و ....) تو مرورگر من غیر قابل دسترسی هست ، !! وقتی موس روش میره فعال نمیشه و مثل عکس هست !!! .................................................. ............................ همانظور که میبینید حتی نمیشه فاصله تو نوشته ها ایجاد کرد !!!******************************************* من از فایرفاکس استفاده میکنم تو اکسپلورر هم همینطوره ورژن فایرفاکس را بروز کردم ، از نصب جاوا اسکریپت مطمئن شدم ولی هیچ تغییری نکرد ................... در ضمن وقتی وارد سایت میشم از درگاه این آدرس وارد میشه !!! البته تا حالا به این مسئله دقت نکرده بودم اگه مشکلی هست که نمیدونم لطفا راهنمایی کنید ... ... . . looking up yui. yahooapis.com

Abbas Amiri
سه شنبه 17 دی 1392, 15:11 عصر
سلام آره دقیفا همین را میخواستم و بی نهایت ممنونم جواب داد .................................................. ..................................یه سوال جناب امیری : چرا ابزارهای ویرایش (رنگ و اندازه و مدیریت ضمیمه و تک کد و ....) تو مرورگر من غیر قابل دسترسی هست ، !! وقتی موس روش میره فعال نمیشه و مثل عکس هست !!! .................................................. ............................ همانظور که میبینید حتی نمیشه فاصله تو نوشته ها ایجاد کرد !!!******************************************* من از فایرفاکس استفاده میکنم تو اکسپلورر هم همینطوره ورژن فایرفاکس را بروز کردم ، از نصب جاوا اسکریپت مطمئن شدم ولی هیچ تغییری نکرد ................... در ضمن وقتی وارد سایت میشم از درگاه این آدرس وارد میشه !!! البته تا حالا به این مسئله دقت نکرده بودم اگه مشکلی هست که نمیدونم لطفا راهنمایی کنید ... ... . . looking up yui. yahooapis.com

بهتر بود این سوال را ازمدیران اصلی سایت می پرسیدید . اما سری به Control Panel>>Internet Options >>Lan Setting بزنید و چک کنید از پروکسی استفاده می کنید؟

tanha50
دوشنبه 05 آبان 1393, 06:13 صبح
با سلام و سپاس فراوان
دوستان عزیز در فایل ارسالی جداول یک فایل جایگزین جداول فایل اصلی می شود لطف کنید ضمن بررسی فایل پیوستی بفرمایید آیا می شود به جای همه جدولها ، فقط جدول 1 و 2 منتقل شود
ممنون