PDA

View Full Version : انجام بک آپ باتاریخ شمسی



amirkazem
چهارشنبه 19 اسفند 1394, 18:13 عصر
باسلام خدمت دوستان گرامی
بااستفاده ازکدهای آماده که قبلاً دوستان زحمت نوشتنش راکشیده اند، برای گرفتن بک آپ ازبانک اطلاعاتی(اکسس) دربرنامه دلفی، بنده هم مقداری آنراتغییرداده ام(متناسب بابرنامه خودم).
البته اصل کدهامربوط به گرفتن بک آپ باتاریخ سیستم(میلادی) بوده اند.ولی بنده میخوام همیشه بک آپ راباتاریخ شمسی داشته باشم.
لازم به ذکراست بنده دربرنامه ام ازکامپوننت (solar calander)استفاده می کنم.
لطفاً راهنمایی بفرماییدکه چگونه درکنارنام بانک (مثلاً student management_1394.12.19) تاریخ راهم داشته باشم.
واماکدهای مربوطه:


procedure Tf_BackUp.Button1Click(Sender: TObject);var
path,Pdate,Pname,Ptime : string;
begin
try
pdate:=Copy(disp_date,4,2)+Copy(disp_date,7,2);
ptime:=Copy(TimeToStr(time),1,2)+Copy(TimeToStr(ti me),4,2);
pname:='Student Management-'+'.mdb';


Button1.Enabled := false;
Button2.Enabled := false;
Caption := 'لطفا کمي صبر کنيد...';
path := ExtractFilePath(Application.ExeName);


ProgressBar1.Position := ProgressBar1.Position + 30;
ProgressBar1.Position := ProgressBar1.Position + 30;
CopyFile(pchar(path+'Student Management.mdb'),pchar(Pname),False);
ProgressBar1.Position := ProgressBar1.Position + 30;
ShowMessage('کاربر گرامي عمليات تهيه نسخه پشتيبان با موفقيت به پايان رسيد');
Caption := 'تهيه نسخه پشتيبان';
ProgressBar1.Position := 0;
Button1.Enabled := true;
Button2.Enabled := true;
except
ShowMessage('کاربر گرامي تهيه نسخه پشتيبان با مشکل روبرو ميباشد');
Button2.Enabled := true;
ProgressBar1.Position := 0;
Caption := 'تهيه نسخه پشتيبان';
end;
end;

بنده درفرم اصلی یک عنصر(solar date picker)دارم که میخواهم تکست همان عنصر راکه تاریخ شمسی هستش رادرانتهای نام فایل بک آپ داشته باشم.

ابوالفضل عباسی
پنج شنبه 20 اسفند 1394, 03:39 صبح
شما چرا از zip برای بکاپ گیری استفاده نمی کنید؟
از تابع ShellExecute ?
برای تاریخ هم بجای(.)از (-) استفاده کن مثلا student_1394-12-20.zip باشه.
از نمونه برنامه زیر استفاده کن و سوالی داشتی بپرس(درضمن بخش uses برنامه ات این دو را اضافه کن system.zip,shellapi
نمونه فایل زیپ (http://s7.picofile.com/file/8242662250/Zip.zip.html)
ممکنه ایراداتی داشته باشه ولی روش کار همین هست.

hadisalahi2
پنج شنبه 20 اسفند 1394, 06:51 صبح
لازم به ذکراست بنده دربرنامه ام ازکامپوننت (solar calander)استفاده می کنم.

این رو که من قبول ندارم
چون خیلی تبدیل تاریخ هاش مشکل داره
اما Xcalendar از این بهتره و یونیت یوسف جان هم که حرف نداره

اما برای اینکه تاریخ شمسی باشه کنار برنامت توی این خط

pname:='Student Management-'+'.mdb';
قبل .mdb ، یک متغیر رشته ای بزار که تاریخ شمسی رو توش داره
حالا اون تاریخ رو از کجا بیاری از همین روشهایی که گفتم

amirkazem
جمعه 28 اسفند 1394, 19:06 عصر
باسلام،
باتوجه به اینکه فرمت تاریخ در(solar calander)به صورت1394/12/29 می باشد، ظاهراً دستورات فوق برای کپی تکست موجوددرسولارکلندر، بامشکل مواجه میشود.
فکرکنم باید فرمت تاریخ که حاوی(/) اسلش، هست بایدبه نقطه(.)تبدیل بشه. دوستان لطفاًبفرماییدچطورمی تونم فرمت(1394/12/29) رابه (1394.12.29) تبدیل کنم؟
ممنون میشم اگه راهنمایی بفرمایید.:خجالت:

fahimi
دوشنبه 02 فروردین 1395, 03:22 صبح
از تابع StringReplace



var
before, after : string;

begin
// Try to replace all occurrences of a or A to THE
before := 'This is a way to live A big life';

after := StringReplace(before, ' a ', ' THE ',
[rfReplaceAll, rfIgnoreCase]);
ShowMessage('Before = '+before);
ShowMessage('After = '+after);
end;

amirkazem
شنبه 07 فروردین 1395, 18:08 عصر
باسلام وتبریک سال جدید!
ضمن تشکرازهمه دوستان جهت رفع مشکل این تاپیک، موضوع تبدیل تاریخ(1395/01/08) به (1395.01.08) رابه این صورت حل کردم.
درفرم اصلی یک عنصر(solar calander date picker)داشتم. که (تکست)آن رابااستفاده ازکدزیربه صورت (1395.01.08) تبدیل کردم.

var path,Pdate,Pname,Ptime : string;
begin
try
pdate:=form2.SolarDatePicker1.Text;
pdate:=Copy(form2.SolarDatePicker1.Text,1,4)+'_'+C opy(form2.SolarDatePicker1.Text,6,2)+'_'+Copy(form 2.SolarDatePicker1.Text,9,2);
ptime:=Copy(TimeToStr(time),1,2)+Copy(TimeToStr(ti me),4,2);
pname:='Student Management_'+ QuotedStr(pdate)+'.mdb';


Button1.Enabled := false;
Button2.Enabled := false;
Caption := 'لطفا کمي صبر کنيد...';
path := ExtractFilePath(Application.ExeName);


ProgressBar1.Position := ProgressBar1.Position + 30;
ProgressBar1.Position := ProgressBar1.Position + 30;
CopyFile(pchar(path+'Student Management.mdb'),pchar(Pname),False);
ProgressBar1.Position := ProgressBar1.Position + 30;
ShowMessage('کاربر گرامي عمليات تهيه نسخه پشتيبان با موفقيت به پايان رسيد');
Caption := 'تهيه نسخه پشتيبان';
ProgressBar1.Position := 0;
Button1.Enabled := true;
Button2.Enabled := true;
except
ShowMessage('کاربر گرامي تهيه نسخه پشتيبان با مشکل روبرو ميباشد');
Button2.Enabled := true;
ProgressBar1.Position := 0;
Caption := 'تهيه نسخه پشتيبان';
end;

hp1361
یک شنبه 08 فروردین 1395, 02:05 صبح
except
ShowMessage('کاربر گرامي تهيه نسخه پشتيبان با مشکل روبرو ميباشد');
Button2.Enabled := true;
ProgressBar1.Position := 0;
Caption := 'تهيه نسخه پشتيبان';
end;


سلام
هیچ وقت به این شکل استثناها رو مدیریت نکنید(استثنا رو نخورید). چون الان نه کربر نه شمای برنامه نویس در زمان اجرای برنامه نخواهید فهمید چه نوع مشکلی دقیقا پیش آمده است!

موفق باشیم

amirkazem
یک شنبه 08 فروردین 1395, 06:22 صبح
باسلام، جناب:hp1361!
ضمن عرض تبریک سال نووآرزوی بهترینهابرای شمادرسال جدید، ازمساعدتهاوراهنماییهای گذشته نیزکمال تشکررادارم.
میشه بفرماییداشکالات احتمالی که ممکن است دراجرای این برنامه پیش بیادراتوضیح بدید.ضمناً بنده خودم رابرنامه نویس نمیدونم.چون هنوزفکرمیکنم توی الفبای برنامه نویسی هم نیستم.(البته علاقه بسیار زیادی دارم).ضمناً درپستهای قبلی ازدوستان راهنمایی خواستم که هرکدام به زعم خودشون محبت کردندوراهنمایی فرمودند.
ضمناً همانطورکه دراولین پست عرض کردم، قطعه کدنوشته شده برای انجام بک آپ کاربنده نسیت.زحمتی هستش که دوستان قبلاً کشیده اندودرانجمن گذاشته بودند.
بازهم ممنونم بخاطرراهنماییهای مفیدتون!

hp1361
یک شنبه 08 فروردین 1395, 09:04 صبح
باسلام، جناب:hp1361!
ضمن عرض تبریک سال نووآرزوی بهترینهابرای شمادرسال جدید، ازمساعدتهاوراهنماییهای گذشته نیزکمال تشکررادارم.
میشه بفرماییداشکالات احتمالی که ممکن است دراجرای این برنامه پیش بیادراتوضیح بدید.ضمناً بنده خودم رابرنامه نویس نمیدونم.چون هنوزفکرمیکنم توی الفبای برنامه نویسی هم نیستم.(البته علاقه بسیار زیادی دارم).ضمناً درپستهای قبلی ازدوستان راهنمایی خواستم که هرکدام به زعم خودشون محبت کردندوراهنمایی فرمودند.
ضمناً همانطورکه دراولین پست عرض کردم، قطعه کدنوشته شده برای انجام بک آپ کاربنده نسیت.زحمتی هستش که دوستان قبلاً کشیده اندودرانجمن گذاشته بودند.
بازهم ممنونم بخاطرراهنماییهای مفیدتون!

سلام مجدد

ببینید وقتی شما در قسمت except صرفا یک ShowMessage با پیغام ثابت مورد نظر خودتون رو میزارید برنامه رو مقید کردین در هر حالی و بروز هر نوع استثناعی صرفا همین پیغام نمایش داده بشه. اشاره من به استثنای خاصی نیست بلکه نحوه هندل کردن اونه حداقلش اینه که خود پیغام رو عینا به کاربر نشون بدین(با توجه به اینکه کارهایه دیگه ای هم در این قسمت انجم دادین)

موفق باشیم

amirkazem
یک شنبه 08 فروردین 1395, 15:09 عصر
کاملاًصحیح می فرمایید.اتفاقاً برنامه تازمانی که باتاریخ بک آپ نمی گرفت هیچ گونه اروری نمیداد.
تذکربجایی بود.ان شاالله برطرف می کنم.:تشویق:

ابوالفضل عباسی
دوشنبه 09 فروردین 1395, 09:14 صبح
با سلام
چرا از روشی که گفته ام استفاده نمی کنید؟
برای گرفتن تاریخ شمسی،یک فانکشن توی اینترنت هست که تاریخ میلادی رو به شمسی تبدیل میکنه،بعد طبق روش و سورسی که گذاشتم برای ذخیره اطلاعات کمک بگیرید،روش سریع تر و کم نوشتنی هست.(خودم سال هاست از این روش استفاده میکنم،نه مشکلی داشته و نه هنگی و نه خرابی اطلاعات داشته)

amirkazem
دوشنبه 09 فروردین 1395, 23:07 عصر
با سلام
چرا از روشی که گفته ام استفاده نمی کنید؟
برای گرفتن تاریخ شمسی،یک فانکشن توی اینترنت هست که تاریخ میلادی رو به شمسی تبدیل میکنه،بعد طبق روش و سورسی که گذاشتم برای ذخیره اطلاعات کمک بگیرید،روش سریع تر و کم نوشتنی هست.(خودم سال هاست از این روش استفاده میکنم،نه مشکلی داشته و نه هنگی و نه خرابی اطلاعات داشته)


سلام، میشه لطف کنیدلینک فانکشن روبذارید.یادرصورت امکان محبت کنیدیه نمونه کوچک ازذخیره سازی باروشی که مدنشرتون هست بذارید.
ممنون!