PDA

View Full Version : سوال: ذخره یک مقدار در رکورد و بازیابی آن هنگام باز شدن فرم



abdoreza57
یک شنبه 05 تیر 1390, 12:08 عصر
سلام
ضمن تشکر از تمام اساتیدی که تو این سایت مشغول خدمات رسانی هستند
سوالی که برام پیش اومده شاید تابه حال نمونه نداشته و اونم اینکه : چطور میشه مقداری که توی یه رکورد ثبت کردیم موقع باز کردن فرم بره به آخرین ثبت اطلاعات که انجام دادیم
تو نمونه ارسالیم تاريخ تحويل كالا براي همه ركوردها تقريبا مساوي يكي دو ماه آينده است
لذا مي خواستم اين انتخاب تقويم تو اون تاريخ ذخيره بشه و براي ركورد بعدي نياز نباشه كاربر مجددا از صفحه امروز تاريخ بره به يكي دو ماه آينده
منتها اين با دستوري كه به نظرم مي رسيد غلط جواب ميده چون قبل از انتخاب تاریخ مقدار انتخابی از کمبو باکس ذخیره میشه ولی با انتخاب تاريخ اون ذخيره از حافظه پاك مي شه !
لطفا بگيد بايد چكار كنم ؟
فكر مي كنم ايده خوبي باشه برای دوستانی که از این روش می خوان استفاده کنند منتظر اظهار نطر کارگشای تمام دوستان خوبم تو این سایت هستم به امید دیدار

ARData
یک شنبه 05 تیر 1390, 15:09 عصر
فايل اصلاحي خدمت دوست عزيز ...............

abdoreza57
دوشنبه 06 تیر 1390, 01:09 صبح
ضمن تشکر از توجهتون
دوست عزیز تو نمونه خودم تقریبا از همین کد استفاده کرده بودم با این تفاوت که این ذخیره تاریخ را میشه تو همون رکورد بازیابی کرد ولی مشکل از اینجا شروع میشه که با انتخاب یک تاریخ از تقویم مقدار ذخیره شده از کلیبورد پاک میشه به صورت کلی اینکه : کد ذخیره تاریخ روی فرم میباست روی تک تک باتونها باشه !!
حالا نمی دونم با چه دستوری این کار را انجام بدم که تاریخی را که استفاده نمودم تو حافظه کلیبورد بمونه و فرم تقویم تو رکورد بعدی همون محدوده ماه را نشان بده

abdoreza57
چهارشنبه 08 تیر 1390, 00:16 صبح
مجددا خدمت اساتید محترم سایت سلام عرض می کنم اگه از دوستان کسی به قطع میدونه که اصلا میشه چنین کاری کرد یا نه ممنون می شم خواهشی که دارم از تمام دوستان گرامی همکاری لازم را نمایند

mazoolagh
چهارشنبه 08 تیر 1390, 23:34 عصر
خواسته شما بطور کلی (یعنی صرفنظر از کیس شما) بطور قطع شدنی هست. یعنی شما همیشه میتونین در یک فرم یا ریپورت به مقداری یا مقادیری که توسط یک فرم یا ریپورت دیگه آپدیت شده دسترسی پیدا کنین.
اگر درست فهمیده باشم شما یک جایی یک فیلد تاریخ دارین که مقدار پیش فرض اون همیشه تاریخ روز هست و میخواین وقتی کاربر برای اولین بار مقدار اون رو تعیین کرد ، دفعات بعدی مقدار پیش فرض به این مقدار جدید تغییر پیدا کنه.
خوب کافی هست یک متغیر پابلیک تعریف کنین و هر بار در رخداد after_update فیلد مقدارش رو عوض کنین. حالا هر بار که فرم رو باز میکنین در رخداد form_open مقدار پیش فرض فیلد رو از این متغیر گلوبال بخونین.
------------------
اگر قرار هست این سناریو per session اجرا بشه همین که گفته شد کافی هست در غیر اینصورت باید از یک جدول تک رکورد برای ذخیره کردن آخرین مقدار در هنگام بستن دیتا استفاده کنین.

abdoreza57
پنج شنبه 09 تیر 1390, 01:04 صبح
سلام
و بسیار ممنون از پیشنهاد خوبتون
اگه لطف کنی و ساده تر برام توضیح بدی مشکلم حل میشه
یا اگه برات مقدوره نمونه را اصلاح کن چون با اون حال که روشتون منطقی هست خیلی روش کلنجار رفتم اما نشد!!!!

mazoolagh
پنج شنبه 09 تیر 1390, 22:55 عصر
سلام
من برنامه تون رو چک کردم. شما اصل متغیر پابلیک رو رعایت کردین:
Public strDate As String

که البته بهتر هست از نوع LONG تعریف بشه - همینطور در طراحی جداول هم تاریخ رو همیشه عدد LONG تعریف کنین. بهرحال استیل برنامه نویسی هست....بگذریم.

اشکال کار در فرم DATEPICKER هست (frmCalendar)
Private Sub Form_Load()
Me.cmbMonth = ay(Shamsi)
Me.cmbYear = IL(Shamsi())
SetDays
Me.ctlCalendar = Shamsi()
Form.Caption = " ÇãÑæÒ " & To_Hejri(Now, 3)
End Sub

که بجای استفاده از این متغیر STRDATE همیشه با تاریخ روز (SHAMSI) پر میشه.
همون کد رو اصلاح کنین مشکل حل میشه.

کار دیگه ای که باید انجام بدین اجرای کدی مشابه زیر در رخداد FORM_OPEN فرم اصلی هست:

STRDATE= NZ(DMAX("DATE_PAY", "ASLI", SHAMSI))

abdoreza57
جمعه 10 تیر 1390, 23:16 عصر
دوست عزیز ممنون از راهنماییت
ولی هر کاری می کنم این کد ارور میده در ضمن با باز شدن فرم اصلی مقدار فرم تقویم نمی آید کلا روش شما را نتونستم خوب درک کنم
اصلا لطف کن همین رویه را تو نمونه اصلاح کن تا دعای منم پشت سرت باشه !

mazoolagh
شنبه 11 تیر 1390, 00:40 صبح
دوست گرامی
روشی رو که گفتم شما خودتون قبلا پیاده کردین و چیز جدیدی نیست فقط یک اشکال جزئی داشت که خدمتتون گفتم. در واقع راه رو پیمودین.

خطاهایی رو که میفرمایین باحتمال زیاد مربوط به نوع داده ها هست (string - int) که هنگام نوشتن کد باید دقت کنین تبدیل ها درست انجام بشه. تا جایی که خاطرم هست تابع shamsi تاریخ سیستم رو بصورت یک عدد long integer بر میگردوند در صورتیکه شما از متغیر نوع string برای ذخیره تاریخ استفاده کردین و متاسفانه formatted هم هست (یعنی / های جدا کننده رو هم ذخیره میکنین).

من راه رو میگم زحمتش با خودتون چون واقعا نمیتونم روی کدی که ننوشتم کار کنم!

Private Sub Form_Load()
DIM X AS LONG
X=CLNG(REPLACE(STRDATE,"/",""))
Me.cmbMonth = ay(X)
Me.cmbYear = IL(X)
SetDays
Me.ctlCalendar = X
Form.Caption = " ÇãÑæÒ " & To_Hejri(Now, 3)
End Sub