PDA

View Full Version : آبجکت رکوردست



Masoud.eh
دوشنبه 19 تیر 1402, 22:03 عصر
سلام دوستان
ذخیره رکورد با آبجکت رکوردست زمان ذخیره رکورد جدید اگر اطلاعات زیاد باشه (تعداد تکست باکس ها و کمبو باکس آنبوند زیاد باشه) کدنویسی بدلیل متناظر کردن کنترلهای آنبوند و رکوردست زیاد شده و احتمال خطا در کدنویسی هم افزایش پیدا میکنه.
دوستان راهی وجود دارد که با کمترین کدنویسی (مثلا استفاده از حلقه For و معرفی متغیر) بر اساس نام کنترل های آنبوند که هم نام فیلدهای تیبل می باشد، کنترلهای آنبوند و رکوردست را برابر قرار دهیم. (کادر قرمز در عکس)

154803

mazoolagh
سه شنبه 20 تیر 1402, 12:13 عصر
سلام و روز خوش

البته شدنی هست ولی واقعا نیازی نیست!

1- اول از همه این که اسم کنترل ها دقیقا باید با اسم فیلدهای جدول یکی باشه.
2- حواستون به فیلدهای autonumber مثل id باشه.
DIM RS AS RECORDSET
SET RS= CURRENTDB.OPENRECORDSET("....")
DIM FLD AS FIELD
WITH RS
.ADDNEW
FOR EACH FLD IN RS.FIELDS
IF FLD.NAME <> "id" THEN
FLD.VALUE= ME.CONTROLS(FLD.NAME)
ENDIF
NEXT
.UPDATE
END WITH
SET RS= NOTHING

Masoud.eh
سه شنبه 20 تیر 1402, 15:38 عصر
ممنونم دوست عزیز

Masoud.eh
جمعه 20 مرداد 1402, 22:10 عصر
سلام دوست گرامی جنابmazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
یه سوال؟
موضوع مطرح شده برای کدهای sql هم صدق میکنه؟
با حلقه For کنترل ها رو متناظر فیلد های هم نام خودشون قرار بدیم؟ (کادر قرمز)




154860

mazoolagh
شنبه 21 مرداد 1402, 12:46 عصر
سلام دوباره
راستش درست متوجه خواسته شما نشدم!

الان شما یک فرم unbound دارین،
که بعد از باز شدن اون یک رکوردست باز میکنین
و بعد از روی اسم فیلدهای رکوردست، کنترل ها رو به اونها bind میکنین؟

البته نباید مشکلی باشه در اجرا،
ولی واقعا چه مزیتی داره این سناریو نسبت به روش های متعارف و چه چیزی بدست میارین؟

--------
پی نوشت: بهتره در پست ها و پرسش هاتون مخاطب رو محدود به شخص یا اشخاص خاصی نکنین تا بتونین از دانسته های همه بهره بگیرین.

Masoud.eh
شنبه 21 مرداد 1402, 21:20 عصر
دوست عزیز
۱- فرم من از نوع دیتا شیت و بدلیل اینکه جداولم رو از فرم ها جدا کردم با کد sql نوشته شده فیلد هامو فراخوان میکنم.
۲- بدلیل تعداد بالای فیلدها (البته نمونه کد گذاشته شده فقط یک مثال) جهت جلوگیری از تکرار و اشتباه در کد نویسی درخواست راهنمایی استفاده از حلقه for رو داشتم.
(توضیح داده در پست اول، و صد البته که چیزی بدست میارم و واقف به روش متعارف هستم)
۳- پی نوشت : نیت اولا تشکر بود ثانیا چون شما جواب سوالمو دادین گفتم شاید جواب این مورد رو هم بتونید بدید.
در کل بازم تشکر بابت توضیحاتتون

simorgh2000
یک شنبه 22 مرداد 1402, 00:04 صبح
سلام دوست عزیز
شما یه نمونه فایل بذارید دوستان بهتر میتونن راهنمایی کنن

Masoud.eh
یک شنبه 22 مرداد 1402, 20:48 عصر
سلام خدمت شما دوستان
در فایل پیوست دیتابیس DB1 اطلاعات فرم frmSub از جدول tbl دیتابیس DB2 بوسیله کد sql استخراج شده و باید تمامی فیلد های جدول با کنترل های فرمم متناظر هم قرار داده بشه. حال اگر تعداد فیلدهای جدول زیاد باشه جهت جلوگیری از اشتباه در کد نویسی از دوستان کمک خواستم که با حلقه for فیلد های جدول را با کنترل های فرمم متناظر هم قرار بدند.(کادر قرمز در پست شماره 4)

154863

simorgh2000
یک شنبه 22 مرداد 1402, 22:21 عصر
سلام دوست عزیز

1- فایل ارسالی را مستقیم در درایو D قرار دهید.
2- نام کنترلها نیاید متناظر با فیلدها باشه باید یک اسم مشترک به همراه عدد که از صفر شروع بشه مثل Text0 - Text1- Text2 .....
3- ليبل تكست باكس ها را به ترتيب نام فيلد ها نام گذاری کنید

اینم نمونه فایل خدمت شما :


توجه: در صورت اضافه کردن فیلد جدید به جدول فقط کافیست یک تکست باکس به فرم اضافه کنید در کدها هیچ تغییری نیاز نیست

Masoud.eh
دوشنبه 23 مرداد 1402, 00:49 صبح
ممنون دوست عزیز