ورود

View Full Version : حرفه ای: حلقه‌های تکرار (اضافه کردن رکورد با شرط‌های خاص و تعداد متغیر)



Nazir Ahmad
دوشنبه 17 شهریور 1399, 08:03 صبح
سلام به تمام اساتید
من میخوام یک تعداد رکورد رو در یک فرم اضافه کنم به طوری که شرطهایی که برای اون در نظر میگیرم نظر به تعدادی که در یک تکست باکس مشخص میشه متغیر باشه
یعنی در یک تکست باکس یک عدد (مثلا 10) وارد میشه و با کلیک کردن روی دکمه به تعداد 10 رکورد با شرطهای تعیین شده اضافه میشه
توضیح بیشتر هم اینه که،
1- وقتی روی دکمه کلیک میکنیم اول میبینه که اگر مقدار تکست باکس بیشتر از 0 بود کار رو شروع میکنه
2- بعدا میره و از یک ساب فرم مقادیری (مثلا 50 رکورد) رو کپی میکنه و میره در یک ساب‌فرم دیگه (که یک جدول دیگه هست) پیست میکنه
3- با هر بار انجام این‌کار یک شماره از مقدار تکست باکسی که تعداد رو از اون میگرفت کم میشه (یعنی مقدار تکست باکس منهای 1 میشه)
و این حلقه تا زمانی تکرار میشه که مقدار تکست باکس مساوی به 0 بشه

این هم کدهایی که من نوشتم، البته اگر دوستان در ارتباط با کدها و روش کار هم اگر پیشنهادی دارید ممنون میشم راهنمایی بفرمایید
If Me.flt_Count > 0 Then On Error Resume Next
DoCmd.GoToRecord , "", acNewRec
If (MacroError <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
End If
Me.SMf_Nahieh = [FilterForm].Form![fltNahiya]
Me.SMf_Note = "Adding"
DoCmd.GoToControl "SMf_StartDate"
' Me.EcoSocialMobileListExisting_SF.Requery
On Error Resume Next
'On Error GoTo AddErr
DoCmd.GoToControl ("EcoSocialMobileListExisting_SF")
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdCopy

If Me.EcSocRecCount.Value > 0 Then

If MsgBox("There are '" & Me.EcoSocialMobileList_SF.Form.Recordset.RecordCou nt & "' Record has been added to list, Do you want to replace?", vbYesNo, "EUSHMP") = vbYes Then
DoCmd.GoToControl ("EcoSocialMobileList_SF")
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDelete
DoCmd.RunCommand acCmdPaste
Else
DoCmd.GoToControl ("EcoSocialMobileList_SF")
DoCmd.RunCommand acCmdSelectAllRecords
' DoCmd.RunCommand acCmdPaste
DoCmd.SetWarnings True

End If
Else
DoCmd.GoToControl ("EcoSocialMobileList_SF")
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdPaste
End If
Me.flt_Count = Me.flt_Count - 1

'AddErr: If Err.Number = "2046" Then
' MsgBox "The Operation is not complated. Pleas press 'Ctrl+V' on your keybord to Paste the data", vbCritical, "EUSHMP"
' Else
' Resume Next
' End If


Else
MsgBox "Plese fill field 'From' and 'To'"
Me.SMf_StartDate.SetFocus
End If



اساتید و دوستان لطفا همکار کنید
پیشاپیش ممنون از شما

Nazir Ahmad
چهارشنبه 19 شهریور 1399, 08:41 صبح
اساتید و دوستان عزیز لطفا کمک کنید

mohammadsaleh
چهارشنبه 19 شهریور 1399, 12:27 عصر
اگر درست متوجه شده باشم هدف شما کپی تعدادی از رکوردها از یک جدول به جدول دیگر است.
توجه داشته باشید ماهیت سابفرم نمایش اطلاعات گرفته شده از جدول می باشد. و کپی اطلاعات از یک سابفرم به سابفرم دیگر معنا ندارد.
اگر هدفتان همان است که گفتم باید برای اینکار ابتدا مشخص کنید کدام اطلاعات - با چه مشخصاتی - را قصد دارید انتقال دهید تا بتوان برای آن راه حل پیدا کرد.
در ضمن این روشی که شما نوشتید گرچه منطقا درست می باشد اما راه حل مناسبی برای اینکار نیست. باز باید دید هدف شما از این نحوه نوشتن چیست؟

Nazir Ahmad
چهارشنبه 19 شهریور 1399, 13:06 عصر
اگر درست متوجه شده باشم هدف شما کپی تعدادی از رکوردها از یک جدول به جدول دیگر است.
توجه داشته باشید ماهیت سابفرم نمایش اطلاعات گرفته شده از جدول می باشد. و کپی اطلاعات از یک سابفرم به سابفرم دیگر معنا ندارد.
اگر هدفتان همان است که گفتم باید برای اینکار ابتدا مشخص کنید کدام اطلاعات - با چه مشخصاتی - را قصد دارید انتقال دهید تا بتوان برای آن راه حل پیدا کرد.
در ضمن این روشی که شما نوشتید گرچه منطقا درست می باشد اما راه حل مناسبی برای اینکار نیست. باز باید دید هدف شما از این نحوه نوشتن چیست؟

ممنون بابت پاسخگویی
هدف من دقیقا همون کپی تعدادی از رکوردها از یک جدول به جدول دیگه هست، اما این یک مرحله از کاره
در مرحله دوم باید این عملیات به تعدادی مشخص تکرار بشه
توضیح واضحتر اینه که من یک فرم دارم که شامل دو تا ساب فرمه. ساب فرم اولی۵۰ رکورد از یک جدول رو نشون میده و من میخوام در جدول دیگه این 50 تا رکورد رو کپی کنم که لینک به فرم اصلی من با کد فرم باشه. یعنی در هر فرم باید 50 رکورد از یک جدول به جدول دیگه (توسط ساب‌فرمهایی که در فرم نشون داده میشه) کپی بشه و همزمان اون 50 تا برای فرم بعدی که داریم نمایش داده نشه.
حالا میخوام این حلقه تا زمانی که ما تعیین میکنیم اجرا بشه . مثلا ما در یک تکست باکس وارد میکنیم 10 و باید 10 رکورد اضافه بشه و در هر رکورد 50 رکورد از یک جدول به جدول دیگه کپی بشه
البته تعداد 10 متغیره
توضیحات در تصویر کمی واضح‌تره

padide55
پنج شنبه 20 شهریور 1399, 10:38 صبح
ممنون بابت پاسخگویی
هدف من دقیقا همون کپی تعدادی از رکوردها از یک جدول به جدول دیگه هست، اما این یک مرحله از کاره
در مرحله دوم باید این عملیات به تعدادی مشخص تکرار بشه
توضیح واضحتر اینه که من یک فرم دارم که شامل دو تا ساب فرمه. ساب فرم اولی۵۰ رکورد از یک جدول رو نشون میده و من میخوام در جدول دیگه این 50 تا رکورد رو کپی کنم که لینک به فرم اصلی من با کد فرم باشه. یعنی در هر فرم باید 50 رکورد از یک جدول به جدول دیگه (توسط ساب‌فرمهایی که در فرم نشون داده میشه) کپی بشه و همزمان اون 50 تا برای فرم بعدی که داریم نمایش داده نشه.
حالا میخوام این حلقه تا زمانی که ما تعیین میکنیم اجرا بشه . مثلا ما در یک تکست باکس وارد میکنیم 10 و باید 10 رکورد اضافه بشه و در هر رکورد 50 رکورد از یک جدول به جدول دیگه کپی بشه
البته تعداد 10 متغیره
توضیحات در تصویر کمی واضح‌تره

سلام
1-الان شما 1745 رکورد دارین . انتخاب 50 رکورد چگونه هست ؟ کدام رکوردها باید منتقل بشه
ضمن اینکه ساب فرم شما به چه جدولی لینک هست ؟ شما باید با جدول انتقال رکوردها رو انجام بدین و در فرم و ساب فرم نمایش داده میشه .
2- لینک با id 44 قابل حل هست و درصورت انتقال داده ها، باید چه id بگیرند؟ تا درفرم اصلی برای همون formid نمایش داده شوند؟
3- به تعداد تکست باکس رکورد به جدول فرم اضافه میکنیم . نهایتا چه داده هایی باید بهشون لینک بشه وformid چی باید باشه ؟

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

ضمنا
یک فایل رو داده ها رو خالی کنید و فقط با 10 تا 12 رکورد ضمیمه کنید تا دوستان بررسی کنند .

Nazir Ahmad
یک شنبه 30 شهریور 1399, 12:19 عصر
سلام
1-الان شما 1745 رکورد دارین . انتخاب 50 رکورد چگونه هست ؟ کدام رکوردها باید منتقل بشه
ضمن اینکه ساب فرم شما به چه جدولی لینک هست ؟ شما باید با جدول انتقال رکوردها رو انجام بدین و در فرم و ساب فرم نمایش داده میشه .
2- لینک با id 44 قابل حل هست و درصورت انتقال داده ها، باید چه id بگیرند؟ تا درفرم اصلی برای همون formid نمایش داده شوند؟
3- به تعداد تکست باکس رکورد به جدول فرم اضافه میکنیم . نهایتا چه داده هایی باید بهشون لینک بشه وformid چی باید باشه ؟

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

ضمنا
یک فایل رو داده ها رو خالی کنید و فقط با 10 تا 12 رکورد ضمیمه کنید تا دوستان بررسی کنند .

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


من میخوام از لیست ساب فرم 'موجود' در هر فرم به تعداد 50 رکورد کپی و به ساب فرم 'جدید' اضافه بشه، (تعداد و نوعیت رکوردها مشابه هست)
نکته 1: هر بار که از ساب‌فرم "موجود" 50 رکورد کم میشه باید در فرم‌های بعدی این رکوردها نشون داده نشه و در عین حال نمیخوام هم که از جدول اصلی رکوردها کت یا دلت بشه
نکته 2: ساب فرم "موجود" با فیلد "SMo_FormID" با فیلد "SMf_FormID" از فرم فعلی در ارتباط هست
نکته 3: این حلقه تا زمانی ادامه پیدا کنه که فیلد "Remain" صفر بشه یعنی به تعداد بین "From" تا "To" باید به فرم اصلی اضافه بشه و این جریان ادامه پیدا کنه
البته در هر جدول به خصوص جدول "موجود" امکان وجود تا 100هزار رکورد وجود داره و فیلدهای زیادی هم داره که در سرعت کار تاثیر داره و همچنین جداول دیگه‌ای هم وجود داره که نظر به نیاز بعضی از اطلاعاتشان با جداول موجود لینک و استفاده میشه

Nazir Ahmad
یک شنبه 30 شهریور 1399, 12:27 عصر
1-الان شما 1745 رکورد دارین . انتخاب 50 رکورد چگونه هست ؟ کدام رکوردها باید منتقل بشه
.
152183152183
البته مه از Top Values در کویری استفاده کرده بودم. نمیدونم نظر شما چییه؟

Nazir Ahmad
دوشنبه 31 شهریور 1399, 06:35 صبح
سلام
1-الان شما 1745 رکورد دارین . انتخاب 50 رکورد چگونه هست ؟ کدام رکوردها باید منتقل بشه
ضمن اینکه ساب فرم شما به چه جدولی لینک هست ؟ شما باید با جدول انتقال رکوردها رو انجام بدین و در فرم و ساب فرم نمایش داده میشه .
2- لینک با id 44 قابل حل هست و درصورت انتقال داده ها، باید چه id بگیرند؟ تا درفرم اصلی برای همون formid نمایش داده شوند؟
3- به تعداد تکست باکس رکورد به جدول فرم اضافه میکنیم . نهایتا چه داده هایی باید بهشون لینک بشه وformid چی باید باشه ؟

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

ضمنا
یک فایل رو داده ها رو خالی کنید و فقط با 10 تا 12 رکورد ضمیمه کنید تا دوستان بررسی کنند .
دوستان
لطفا همکاری کنید
ممنون

padide55
دوشنبه 31 شهریور 1399, 08:44 صبح
سلام .کدامرکوردها جابجا بشن
بر اساس شروع و پایان .tsdeviseو ..
کدوم موارد انتخاب بشه .
ردیف نداره که بگیم 50 تا اول لیست .
یه جستجو باید داشته باشه . ترتیبی . چیزی .

Nazir Ahmad
دوشنبه 31 شهریور 1399, 11:37 صبح
سلام .کدامرکوردها جابجا بشن
بر اساس شروع و پایان .tsdeviseو ..
کدوم موارد انتخاب بشه .
ردیف نداره که بگیم 50 تا اول لیست .
یه جستجو باید داشته باشه . ترتیبی . چیزی .

سلام
ترتیب زیاد مهم نیست
اما شما مثلا به اساس سه فیلد از جدول ترتیب کنید، فیلد (1- ناحیه 2-گذر 3- بلاک) و 50 تای اول لیست رو انتقال بدید به جدول دیگه درحالی که در ادامه از لیست جدول اولی فیلتر بشه و نشون نده دیگه
و در نهایت باید تمام رکودرها انتقال داده بشن و لیست جدول او خالی بشه

به طور کل بگم که من میخوام هر 50 رکورد از جدول اولی رو در یک صفحه چاپ کنم به طوری که هر صفحه کد فرم مجزایی داشته باشه
مثلا ما فیلدی به نام ناحیه داریم، مثلا ناحیه 08 و میخواییم تمام رکوردهایی که در جدول اول در فیلد ناحیه 08 هست رو 50 تایی در یک صفحه یا یک فرم داشته باشیم که هر صفحه یا فرم یک کد مجزا داشته باشه مثلا 8001، 8002، 8003 و الی آخر

padide55
دوشنبه 31 شهریور 1399, 12:51 عصر
سلام
ترتیب زیاد مهم نیست
اما شما مثلا به اساس سه فیلد از جدول ترتیب کنید، فیلد (1- ناحیه 2-گذر 3- بلاک) و 50 تای اول لیست رو انتقال بدید به جدول دیگه درحالی که در ادامه از لیست جدول اولی فیلتر بشه و نشون نده دیگه
و در نهایت باید تمام رکودرها انتقال داده بشن و لیست جدول او خالی بشه

به طور کل بگم که من میخوام هر 50 رکورد از جدول اولی رو در یک صفحه چاپ کنم به طوری که هر صفحه کد فرم مجزایی داشته باشه
مثلا ما فیلدی به نام ناحیه داریم، مثلا ناحیه 08 و میخواییم تمام رکوردهایی که در جدول اول در فیلد ناحیه 08 هست رو 50 تایی در یک صفحه یا یک فرم داشته باشیم که هر صفحه یا فرم یک کد مجزا داشته باشه مثلا 8001، 8002، 8003 و الی آخر

اگر جدول اول سریال اتونامبر بگذاریم بعدا هر 50 تا رو انتقال بده و ادامه بهتره به نظرم . چون دقیقا میشه فهمید چه ترتیب هایی منتقل شده و باید حذف بشه .
منظورم اینه که یک فیلد کلیدی میخواد که اول باید ایجاد بشه . مشکلی ندارید با این قضیه ؟
این کار که انجام شد بعد میریم سراغ انتقال به روش کوئری .
50 تا اول هر نوبت منتقل بشه و بس .
اگر اکی هست اول با پریماری کی سریال بدم به دیتابیس اصلی .بعد ادامه کار به راحتی قابل انجام هست.

Nazir Ahmad
دوشنبه 31 شهریور 1399, 13:44 عصر
اگر جدول اول سریال اتونامبر بگذاریم بعدا هر 50 تا رو انتقال بده و ادامه بهتره به نظرم . چون دقیقا میشه فهمید چه ترتیب هایی منتقل شده و باید حذف بشه .
منظورم اینه که یک فیلد کلیدی میخواد که اول باید ایجاد بشه . مشکلی ندارید با این قضیه ؟
این کار که انجام شد بعد میریم سراغ انتقال به روش کوئری .
50 تا اول هر نوبت منتقل بشه و بس .
اگر اکی هست اول با پریماری کی سریال بدم به دیتابیس اصلی .بعد ادامه کار به راحتی قابل انجام هست.
اگر اینطوری بشه که از ترکیب چند فیلد بشه یک کد منحصر به رکورد ایجاد کرد برای کار من بهتره
به این شکل
Ts_RowCode: Val(Format([TS_Province],"00") & Format([TS_City],"00") & Format([TS_District],"00") & Format([TS_Guzar],"00") & Format([TS_Block],"000") & Format([TS_Parcel],"000"))
و با استفاده از سورت کردن این فیلد کارهای بعدی رو انجام بدیم
البته این کار حتمی نیست و میشه از اتونامبر هم استفاده کرد و بعدا در گزارش‌ها طبق نیاز سورت رو انجام داد.

padide55
سه شنبه 01 مهر 1399, 09:07 صبح
مشکل شما در چرخه do هست که انجام نمیشه
و حذف هم باید با روشی انجام بشه که هر مورد انتقالی حذف بشه

من چون کد نویسی ضعیف هستم با کوئری مشکل رو حل کردم . خودتون ببینید با کد نویسی میتونید حلش کنید

ضمنا جدول رو تغییر دادم autonumber گذاشتم و انتقال هم که میدم . کد مورد نظر رو هم انتقال میدم . به فیلد مشابه در جدول مقصد که ایجاد کردم .
چک اپ گذاشتم که مغایرت گیری کنه و بعد موارد مغایرت رو حذف کنم .

فقط ترتیب شماره رو نتونستم ایجاد کنم .
اون هم در ریپورت میشه درستش کرد . چون در ریپورت میشه شماره ردیف اضافه نمود

http://s15.picofile.com/file/8408955942/shmp2.zip.html

Nazir Ahmad
سه شنبه 01 مهر 1399, 09:39 صبح
مشکل شما در چرخه do هست که انجام نمیشه
و حذف هم باید با روشی انجام بشه که هر مورد انتقالی حذف بشه

من چون کد نویسی ضعیف هستم با کوئری مشکل رو حل کردم . خودتون ببینید با کد نویسی میتونید حلش کنید

ضمنا جدول رو تغییر دادم autonumber گذاشتم و انتقال هم که میدم . کد مورد نظر رو هم انتقال میدم . به فیلد مشابه در جدول مقصد که ایجاد کردم .
چک اپ گذاشتم که مغایرت گیری کنه و بعد موارد مغایرت رو حذف کنم .

فقط ترتیب شماره رو نتونستم ایجاد کنم .
اون هم در ریپورت میشه درستش کرد . چون در ریپورت میشه شماره ردیف اضافه نمود

http://s15.picofile.com/file/8408955942/shmp2.zip.html
ممنون از شما
اما عملا وقتی کلیک میکنیم هیچ کاری صورت نمیگیره و انتقال نمیشه اطلاعات
و رکوردها در جدول جدید اضافه نمیشه

Nazir Ahmad
سه شنبه 01 مهر 1399, 11:20 صبح
و در ضمن من میخوام اطلاعات در جدول اصلی باقی بمونه و از اون پاک نشه
البته یک راه هم اینه که در یک جدول موقتی ثبت بشه (شاید)

padide55
سه شنبه 01 مهر 1399, 11:56 صبح
ممنون از شما
اما عملا وقتی کلیک میکنیم هیچ کاری صورت نمیگیره و انتقال نمیشه اطلاعات
و رکوردها در جدول جدید اضافه نمیشه

سلام مجدد . من تست کردم انجام شد.

برید اکشن کوئری رو غیرفعال کنید . شاید مشکل اونجاست

padide55
سه شنبه 01 مهر 1399, 11:58 صبح
برای باقی موندن باید در فیلدی که اضلافه کردم کد بزارید مثلا 3 بع معنی انتقال داده شده که دیگه اونو منتقل نکنه و اونهایی منتقل بشن که کدشون 3 نیست .یا فیلد true false درست کنید .

Nazir Ahmad
چهارشنبه 02 مهر 1399, 07:15 صبح
برای باقی موندن باید در فیلدی که اضلافه کردم کد بزارید مثلا 3 بع معنی انتقال داده شده که دیگه اونو منتقل نکنه و اونهایی منتقل بشن که کدشون 3 نیست .یا فیلد true false درست کنید .

ممنون از شما
اما این چیزی که من میخواستم رو برآورده نمیکنه
باید در هر مرحله 50 رکورد از جدول TechnicalSurvey به جدول EcoSocialMobileList اضافه بشه و همزمان یک رکورد در جدول EcoSocialMobileForms اضافه بشه و فیلد FormID از رکوردهایی که انتقال داده شده مساوی با Form ID رکود اضافه شده در جدول EcoSocialMobileForm بشه و این چرخه باید به تعداد تکست باکس Count در فرم ادامه پیدا کنه یعنی اگر تکست باکس Count مساوی به 8 باشه، باید 8 بار این کار تکرار بشه. و رکوردهایی که از جدول TechnicalSurvey به جدول EcoSocialMobileList انتقال داده میشه پاک نشه و سر جای خودش بمونه، اما در مراحل بعدی دوباره انتقال داده نشه.
درحالیکه فعلا یک رکود انتقال پیدا میکنه و تمام رکوردها از جدول اولی پاک میشه

padide55
چهارشنبه 02 مهر 1399, 08:32 صبح
ممنون از شما
اما این چیزی که من میخواستم رو برآورده نمیکنه
باید در هر مرحله 50 رکورد از جدول TechnicalSurvey به جدول EcoSocialMobileList اضافه بشه و همزمان یک رکورد در جدول EcoSocialMobileForms اضافه بشه و فیلد FormID از رکوردهایی که انتقال داده شده مساوی با Form ID رکود اضافه شده در جدول EcoSocialMobileForm بشه و این چرخه باید به تعداد تکست باکس Count در فرم ادامه پیدا کنه یعنی اگر تکست باکس Count مساوی به 8 باشه، باید 8 بار این کار تکرار بشه. و رکوردهایی که از جدول TechnicalSurvey به جدول EcoSocialMobileList انتقال داده میشه پاک نشه و سر جای خودش بمونه، اما در مراحل بعدی دوباره انتقال داده نشه.
درحالیکه فعلا یک رکود انتقال پیدا میکنه و تمام رکوردها از جدول اولی پاک میشه



http://s15.picofile.com/file/8409038168/shmp3.zip.html

50 تا انتقال میده و درنهایت چک اپ رو تبدیل به 2 میکنه به معنی انتقال داده شده. دیگه حذف نمیشه

برای تکرار کد do رو غیرفعال کردم . فعال کنید . فقط اگر میخواین در formId دیگه 50 تا اضافه کنه باید کد docmd.gotocontrol next یا add new record در مسیر اضافه کنید .

Nazir Ahmad
چهارشنبه 02 مهر 1399, 10:41 صبح
http://s15.picofile.com/file/8409038168/shmp3.zip.html

50 تا انتقال میده و درنهایت چک اپ رو تبدیل به 2 میکنه به معنی انتقال داده شده. دیگه حذف نمیشه

برای تکرار کد do رو غیرفعال کردم . فعال کنید . فقط اگر میخواین در formId دیگه 50 تا اضافه کنه باید کد docmd.gotocontrol next یا add new record در مسیر اضافه کنید .

باز هم ممنون
من کاری که گفتید رو انجام دادم و کد رو به این شکل تغییر دادم
DoCmd.SetWarnings FalseDoCmd.RunCommand acCmdSaveRecord


Do


If flt_Count >= 1 Then
Me.SMf_Note = "."
stDocName = "Q01-TechnicalSurvey Query"
DoCmd.OpenQuery stDocName




stDocName = "q02-"
DoCmd.OpenQuery stDocName



stDocName = "q03-"
DoCmd.OpenQuery stDocName


DoCmd.RunCommand acCmdSaveRecord
flt_Count = flt_Count - 1


On Error Resume Next
DoCmd.GoToRecord , "", acNewRec
If (MacroError <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
End If




End If


Loop Until flt_Count = 0


'Me.Form.Requery
End Sub
اما باز هم مشکل دارم
به رکورد بعدی میره و رکورد رو اضافه میکنه اما 50 رکوردی که باید اضافه بشه رو اضافه نمیکنه متاسفانه
لطفا خودتون اصلاح بفرمایید

padide55
چهارشنبه 02 مهر 1399, 11:16 صبح
باز هم ممنون
من کاری که گفتید رو انجام دادم و کد رو به این شکل تغییر دادم
DoCmd.SetWarnings FalseDoCmd.RunCommand acCmdSaveRecord


Do


If flt_Count >= 1 Then
Me.SMf_Note = "."
stDocName = "Q01-TechnicalSurvey Query"
DoCmd.OpenQuery stDocName




stDocName = "q02-"
DoCmd.OpenQuery stDocName



stDocName = "q03-"
DoCmd.OpenQuery stDocName


DoCmd.RunCommand acCmdSaveRecord
flt_Count = flt_Count - 1


On Error Resume Next
DoCmd.GoToRecord , "", acNewRec
If (MacroError <> 0) Then
Beep
MsgBox MacroError.Description, vbOKOnly, ""
End If




End If


Loop Until flt_Count = 0


'Me.Form.Requery
End Sub
اما باز هم مشکل دارم
به رکورد بعدی میره و رکورد رو اضافه میکنه اما 50 رکوردی که باید اضافه بشه رو اضافه نمیکنه متاسفانه
لطفا خودتون اصلاح بفرمایید
احتمالا مشکل از نوع ویندوز باشه .
باز هم بررسی میکنم ببینم چی میشه . ولی اصول کار انجام میشه . اینجا من مشکلی ندارم.

Nazir Ahmad
چهارشنبه 02 مهر 1399, 13:17 عصر
احتمالا مشکل از نوع ویندوز باشه .
باز هم بررسی میکنم ببینم چی میشه . ولی اصول کار انجام میشه . اینجا من مشکلی ندارم.
ممنون
یک موضوع دیگه رو هم مد نظر داشته باشید که وقتی در یک فرم 50 رکورد رو انتقال میدیم در فرم بعدی دیگه اون 50 تای اولی دیگه نباید باشن و دوباره انتقال نشن و رکوردهای بعدی 50 تایی کپی بشه (که البته فکر کنم این موضوع حله)
حالا میخوام در یک جدول تعداد باقیمانده رو بهم نشون بده که چند رکورد از جدول اصلی باقیمونده، مثلا از مجموع 1220 رکوردی که وجود داشته ما 10 فرم (که هر فرم 50 رکورد داره و مجموع رکوردهایی که انتقال شده میشه 500 تا). حال میخوایم یه جایی لیستی از رکوردهای باقیمانده داشته باشیم.
پیشاپیش ممنون

Nazir Ahmad
پنج شنبه 03 مهر 1399, 07:54 صبح
ممنون
یک موضوع دیگه رو هم مد نظر داشته باشید که وقتی در یک فرم 50 رکورد رو انتقال میدیم در فرم بعدی دیگه اون 50 تای اولی دیگه نباید باشن و دوباره انتقال نشن و رکوردهای بعدی 50 تایی کپی بشه (که البته فکر کنم این موضوع حله)
حالا میخوام در یک جدول تعداد باقیمانده رو بهم نشون بده که چند رکورد از جدول اصلی باقیمونده، مثلا از مجموع 1220 رکوردی که وجود داشته ما 10 فرم (که هر فرم 50 رکورد داره و مجموع رکوردهایی که انتقال شده میشه 500 تا). حال میخوایم یه جایی لیستی از رکوردهای باقیمانده داشته باشیم.
پیشاپیش ممنون

سلام مجدد
مشکل انتقال 50 رکورد برای هر فرم حل شد. فقط باید پیش از اجرای کویری فرم save میشد
اما مشکل بعدی اینکه میخواهیم بدونیم که چند رکورد دیگه در جدول اصلی باقی مونده و در یک کویری یا جدول جداگانه داشته باشیم
البته میشه که از کویری Unmatched Query استفاده کرد. اما این مدل خیلی سرعت رو پایین میاره و چون رکودرها زیاده سرعت اجرای کویری پایین هست

padide55
پنج شنبه 03 مهر 1399, 11:37 صبح
سلام مجدد
مشکل انتقال 50 رکورد برای هر فرم حل شد. فقط باید پیش از اجرای کویری فرم save میشد
اما مشکل بعدی اینکه میخواهیم بدونیم که چند رکورد دیگه در جدول اصلی باقی مونده و در یک کویری یا جدول جداگانه داشته باشیم
البته میشه که از کویری Unmatched Query استفاده کرد. اما این مدل خیلی سرعت رو پایین میاره و چون رکودرها زیاده سرعت اجرای کویری پایین هست

سلام مجدد
unmach query زمانی کار میکنه که id ثابت autonumber در اولین جدول باشه که بعد از انتقال بتونین با هم مچ کنید/
اگر از فایل نمونه دوم که فرستادم استفاده نموده اید . مشاهده میکنید که یک فیلد chekup1 ایجاد کردم . اونجا موارد ارسال نشده کدشون عوض شده . میتونید کوئری درست کنید که بر اساس کد نمایش بده .

Nazir Ahmad
پنج شنبه 03 مهر 1399, 11:51 صبح
سلام مجدد
مشکل انتقال 50 رکورد برای هر فرم حل شد. فقط باید پیش از اجرای کویری فرم save میشد
اما مشکل بعدی اینکه میخواهیم بدونیم که چند رکورد دیگه در جدول اصلی باقی مونده و در یک کویری یا جدول جداگانه داشته باشیم
البته میشه که از کویری Unmatched Query استفاده کرد. اما این مدل خیلی سرعت رو پایین میاره و چون رکودرها زیاده سرعت اجرای کویری پایین هست
مشکل حل شد
ممنون بابت همکار شما