PDA

View Full Version : تعریف دوره یا سال کاری



rambod51
سه شنبه 05 خرداد 1383, 13:29 عصر
بانکهای من با پارادوکس ایجاد شده و برنامه ای که نوشتم تحویل دادم حالا من باید امکان استفاده از دوره یا همان سال کاری را به برنامه اضافه کنم ـ مثل ایجاد دوره مالی در برنامه های حسابداری ـ بصورتی که لیست دوره های ایجاد شده در اختیار کاربر باشه تا بتون عملیات حذف ـ ایجاد ـ و انتخاب انجام بده چطور میشه اینکار رو انجام داد با عملیات مربوطه
به عنوان مثال سال کاری 1380 و جداول مربوطه را در این شاخه ایجاد و برنامه با اون کارکنه و وقتی سال بعدی ایجاد شد برنامه بتونه با اونم کار کنه یعنی هر دوره ای که انتخاب شد برنامه مشکل نداشته باشه

Hidarneh
سه شنبه 05 خرداد 1383, 18:56 عصر
می تونی سال جاری ( و سالهای قبل رو ) توی رجیستری ذخیره کنی و بعد اول برنامه یه لیست به کاربر نشون بدی که کدوم دوره کاری رو می خواد . بعد مسیر رو از رجیستری بخونی توی جدول بریزی و بعد از اون جدولت رو باز کنی .

hr110
چهارشنبه 06 خرداد 1383, 07:04 صبح
با سلام، همانطور که میدانید databasename در پاراداکس نام دایرکتوری است که فایلها در ان قرار داده شده است، بنابراین شما میتوانید در تنظیمات اولیه برنامه مسیر دایرکتوری را در یک متغییر تغییر داده و سال جاری را به عنوان دایرکتوری فعال که همان بانک اطلاعات فعال میباشد بدهید. برای تغییر سال نیز میتوانید بصورت دستی و یا توسط برنامه جداول خالی پاراداکس را در دایرکتوری جدید (مثلاً DB1383) کپی نمایید
ضمناً یکسری از جداولتان نیز همیشه وجود دارند و انها نیز باید در یک دایرکتوری دیگر قرار داده شده باشند تا با تغییر سال مسیر آنها تغییر ننماید.

موفق باشید

rambod51
چهارشنبه 06 خرداد 1383, 07:05 صبح
کار با ریجستری رو بلد نیستم
در ضمن من میخوام که کاربر بتونه در ابتدای هر سال یه دوره یا سال کاری جدیدو تعریف کنه یا یه سال کاری رو بتونه از توی لیست و سیستم پاک کنه
ممنون می شم از جوابهاتون

rambod51
چهارشنبه 06 خرداد 1383, 07:12 صبح
جناب آقای مدیر از جواب شما ممنون
من هم به این نتیجه رسیدم که باید از databasename استفاده کرد ولی نتونستم خطا می گرفت
اونو باید چه جوری و کجای برنامه تعریف کرد من بانکهای خودمو توی ماجولی به لسم dm1 قرارداده ام

Panje Tala
چهارشنبه 06 خرداد 1383, 07:22 صبح
با سلام
به نظر من بهترین کار اینه که برای هر سال یک Folder جداگانه با یک نام که با فرمت خاصی از طرف شما تعیین شده ذخیره بشه. وقتی سالی رو وارد می کنی اگه چنین Folder ی رو پیدا کرد که بانکهای درون اونو نشون بده در غیر اینصورت یک Folder جدید با فرمت مورد نظر بسازه بعد بانکهای مورد نیاز رو به همراه تعریف فیلدهای تو اون با کد ایجاد کنه. با این کار برنامه خودش می تونه بانکهای مورد نیازش رو ایجاد کنه. برای ارتباط بین سالها هم میتونی یک بانک مشترک که حاوی اطلاعات از هر سال باشه ایجاد کنی و...

rambod51
چهارشنبه 06 خرداد 1383, 07:32 صبح
پنجه طلا ممنون چه جوری الیاس اونو تعریف کنم
درسته باید هر سال توی یه شاخه جداگانه باشه مانند 1380 و 1381 هر هر کدام یه شاخه جداگانه هستند که بانکا درون ان قرار دارند حالا باید چطوری با اونا کار کرد

Panje Tala
چهارشنبه 06 خرداد 1383, 08:15 صبح
با سلام
برای کار با هر بانک می تونی Alias تعریف کنی یا اینکه Tablename رو بطور مستقیم روی اون Folder مورد نظر تنظیم کنی فرض کنیم نام Table شما tb_hesab.dbf باشه و نام درایو و Folder محل قرار گیری بانک به ترتیب در متغیرهای Xdirve و Xbankfolder باشد ,و folder هر سال با فرمت Y_year باشد مثلا سال 1383 در فولدر y_1383 باشدبرای استفاده از جدول ابتدا سال را باید از کاربر بپرسی فرض کنیم سال در Edit1 قرار دارد:


Xyear:='y_'+edit1.text;
table1.active:=false;
table1.tablename:=xdrive+xbankfolder+xyear+tb_hesa b.dbf;
table1.active:=true;

در این روش دیگه نیازی به تعریف Alias نیست.
با عرض پوزش من وقت محدودی دارم. ولی فکر می کنم باید کارت راه بیفته.برای ایجاد بانک با کد اگه نتونستی در یک فرصت مناسب کدهای مربوطه رو می فرستم.

moradi_am
چهارشنبه 06 خرداد 1383, 11:03 صبح
اگر Database ما Access بود چطور اینکاررا انجام بدهیم :?:

JavanSoft
چهارشنبه 06 خرداد 1383, 13:50 عصر
توی رجیستری ذخیره کنی
این کار اصلا درست نیست ... چون با تغییر ویندوز مشکل پیدا می کنید
بنظرمن روش مسیر برای "پارادوکس" بهتر است

اما 1 مساله برای من روشن نشد ...شما اگر حسابداری نوشته اید باید در انتهای هرسال حسابها را ببندید و برای سال بعد افتتاحیه بزنید .... این مجوزی که شما دنبال آن هستید در صورت تغییر حسابهای سال قبل مشکل بوجود خواهد اورد :?:

Hidarneh
چهارشنبه 06 خرداد 1383, 18:01 عصر
جناب وکیلی اگر منظورتان با من است خب تا حسابهای سال قبل بسته نشوند که سال جدیدی را نمی تواند شروع کند . این یک و دوم هم اینکه با یک انتقال اسناد مشگل حل می شود . در مورد رجیستری هم خب اگر ویندوز را عوض کند باید برنامه را هم نصب کند . چاره این جوری می شه که یه پشتیبانی از اطلاعات گرفت بعد مجموعه رو درست کرد و بعد بازیابی

rambod51
پنج شنبه 07 خرداد 1383, 09:08 صبح
با سلام و تشکر از شما
من خودم این کار رو کردم ولی سیستم یک خطا صادرمی کنه که خیلی سریع از روی صفحه پاک می شه و نتونستم اونو بخونم وفایل اجرایی برنامه رو که اجرا میکنم برنامه بعد از خطا به صورت خودکار بسته می شه
آقای پنجه طلا از شما هم ممنون ولی چند تا سوال
1. آیا برای هر جدول این دستورات رو باید نوشت ـ برای همه جداول یه دستور مثل تعریف الیاس باشه بهتره چ.ن تعداد بانکهای مورد استفاده من خیلی زیاد است
2. بعد از هر بار بستن بانک برای بازکردن ، دوباره باید دستورات و نوشت
3. تعیین نام درایو و شاخه به صورت اتوماتیک است یعنی هر جایی که برنامه نصب شد
بانکهای من در شاخه DATA درون محلی که برنامه نصب می شود قرار دارد
با تشکر از دوستان

Panje Tala
پنج شنبه 07 خرداد 1383, 19:37 عصر
با سلام


1. آیا برای هر جدول این دستورات رو باید نوشت ـ برای همه جداول یه دستور مثل تعریف الیاس باشه بهتره چ.ن تعداد بانکهای مورد استفاده من خیلی زیاد است
2. بعد از هر بار بستن بانک برای بازکردن ، دوباره باید دستورات و نوشت
3. تعیین نام درایو و شاخه به صورت اتوماتیک است یعنی هر جایی که برنامه نصب شد
بانکهای من در شاخه DATA درون محلی که برنامه نصب می شود قرار دارد

در صورت سوال فرض بر این شد که هر سال مالی در یک Folder جداگانه قرار گیرد. که در اینجا نحوه ساخت Folder و ایجاد بانک و بررسی وجود آن مطرح نشدبلکه مطابق درخواست شما نحوه استفاده از بانکهایی که در folder های مختلف قرار دارد آورده شده است.
در این کد فرض شده هرسال مالی را در Folder ی با این فرمت قرار دادی: Y_year یعنی برای سال 1383 فولدر Y_1383 ایجاد شده.
بنابراین شما کافی است سال مالی را از کاربر بپرسی( با توجه به کد فرض شده کاربر سال مالی را در Box ، مورد نظر یعنی Edit1 وارد کرده) بنابراین کافی است کاربر سال مالی را وارد کند و کدها خودبخود جدول را برای آن سال مالی تنظیم میکنند.(البته با فرض اینکه سال مالی قبلا ایجاد شده. بعبارت دیگر باید تعیین کنی که سال مالی وجود دارد یا نه سپس به تغییر سال اقدام کنی) بنابراین برای هر سال لازم نیست کدها راتکرار کنی بلکه با وارد کردن سال توسط کاربر کدها خودبخود به فولدر آن سال اشاره میکند.
2- به هیچ وجه لازم نیست چون تا وقتی خاصیت Tablename توسط خود شما تغییر نکند Table همیشه به بانک مورد نظر شما اشاره میکند. حتی اگر Close , Open شود.
3- محل نصب برنامه رو میتونی تو رجیستری بنویسی و اول برنامه اونرو از رجیستری بخونی و در متغیر Global مر بوطه یعنی Xdrive,Xfolderinstall ذخیره کنی یا اگر برنامه در جای ثابتی نصب می شود در داخل برنامه در ابتدا Xdrive , Xfolder رو مقدار دهی کنی البته این کار خیلی حرفه ای نیست( برخلاف نظر یکی از دوستان اکثر نرم افزارها مشخصات خود رو در رجیستری ثبت می کنند.)

در جواب سوال شما در مورد Alias بیشتر در مواقعی استفاده می شود که بانکها عموما در یک Folder قرار دارند و برای راحتی کار استفاده می شود در مورد سوال شما که برای هر سال یک
فولدر داریم این کار مستلزم تعریف یک Alias برای هر مسیر هست. که احتیاج به کد نویسی بیشتری نسبت به روش ارایه شده می باشد.

Hidarneh
جمعه 08 خرداد 1383, 23:54 عصر
- محل نصب برنامه رو میتونی تو رجیستری بنویسی و اول برنامه اونرو از رجیستری بخونی و در متغیر Global مر بوطه یعنی Xdrive,Xfolderinstall ذخیره کنی یا اگر برنامه در جای ثابتی نصب می شود در داخل برنامه در ابتدا Xdrive , Xfolder رو مقدار دهی کنی البته این کار خیلی حرفه ای نیست


getcurrentdir

rambod51
شنبه 09 خرداد 1383, 08:25 صبح
ممنون از جواب شما ببینم چطور می شه این کارو انجام داد

rambod51
یک شنبه 10 خرداد 1383, 13:06 عصر
سلام
من نتونستم این کار رو انجام بدم از دوستان خواهش می کنم که دستورات اونو برای من بنویسند
پنجه طلا سلام
چطور می تونم از ریجستری اینکارو انجام بدم اکه دستوراتشو برام بنویسی ممنون می شم چون خیلی بهشت احتیاج دارم اونم از نوع فوری

Panje Tala
سه شنبه 12 خرداد 1383, 13:31 عصر
با سلام
در پاسخ به سوال یکی از دوستان دوست عزیزمان Javan_soft کدی را ارایه دادند که آنرا تست کردم و کاملا صحیح بودو بهتر از راه حل رجیستری است:


xinstallpath:=ExteractFilePath(Application.ExecNam e);

حال در هر مسیری که فایل اجرایی شما نصب شده باشد آن مسیر در Xpath قرار می گیرد حال اگر فرض کنیم بانک های شما در Folder ی به نام Bank قرار گرفته باشند و در آن بانک هر سال به ترتیبی که قبلا گفته شد در فولدری جداگانه قرار گیرد با کدهای زیر میتوان مسیر هر بانک را بدست آورد:


xinstallpath:=ExteractFilePath(Application.ExecNam e);
Xbankpath:=xinstallpath+'\bank\'+'y_'+edit1.text;
try
table1.active:=false;
table1.tablename:=xbankpath+'\hesab.dbf';
table1.active:=true;
except
در اینجا سال مالی مربوطه پیدا نشده و باید کدهایی را برای ایجاد سال مالی و بانک مربوطه بنویسی.
end;

لا زم به توضیح است که این کدها برای روشن شدن مطلب آورده شده و برای کاربردی کردن آن تمام ملاحظلات برنامه باید در آن لحاظ شود.

rambod51
یک شنبه 17 خرداد 1383, 08:06 صبح
با سلام
من که از این دستورات چیزی نفهمیدم
من یه برنامه نوشتم که به صورت زیر است
1. نام و مسیر بانکهای برنامه برنامه من c:\dadeh\data که مسیر الیاس هم است و اسم الیاس رو هم dadeh گذاشتم .
2. داخل شاخه data شاخه های سال های کاری من قرار دارند به این ترتیب . 1380 – 1381 – 1382 – و غیره که در هر کدام بانکهای مربوطه که با پارادوکس طراحی شده قرار گرفته است.
حالا میخوام که اول برنامه یه فرم ظاهر بشه و سال کاری را از کاربر بگیره وروی دکمه تایید کلیک کنه بانکهای اون سال در برنامه فعال بشه . من این کار رو چطوری انجام بدم چون هر کاری کردم نشد
در ضمن از این کد ها نه چیزی نفهمیدم و نه طریقه کاربردشو بلدم اگه میشه این تیکه برنامه رو برام تهیه کنید ممنون می شم

rambod51
یک شنبه 24 خرداد 1383, 21:52 عصر
سلام
بابا یکی هم به ما کمک کنه بخدا خیلی نیازش دارم

rambod51
سه شنبه 26 خرداد 1383, 13:49 عصر
سلام
یکی پیدا نشد که به ما کمک کنه باباجون خیلی فوریه

moradi_am
چهارشنبه 27 خرداد 1383, 09:31 صبح
آقا من اینکاررا کرده ام ولی برای Dbisam اگر پارادکس هم نام فولدر را میگیرد فرقی نمیکند .میتوانید به این شکل عمل کنید یک شیی Database روی فایل بگذارید و همه جداول و... را به آن متصل کنید .حالا فقط باید خاصییت directory آنرا تنظیم کنید .
در این کد نام database من dbs است و اطلاعات در شاخه های Data82-Data83,... قرار دارند . سال در متغیر year‌است .
نام Datamadule من هم Datam است.بجای Mast.dat هم نام یکی از تیبلهای خودتان را بگذارید . فانکشن زیر جوابگو هست و الان کار میکند .اگر مشکلی بود بفرمایید .


function TFlogin.OpenDatabase(year:string):boolean;
var dir:string;
begin
year:=Trim(year);
dir:=ExtractFileDir(Application.ExeName)+'\Data'+y ear;
if not FileExists(dir+'\Mast.dat') then
begin
showmessage(' پیدا نشد ' +dir+' فایلهای اطلاعاتی در ');
Result:=false;
Exit;
end;

with Datam do
begin
dbs.Connected:=false;
dbs.Directory:=ExtractFileDir(Application.ExeName) +'\Data'+year;
dbs.Connected:=true;
end;
result:=true;
end;

houshang.karami
چهارشنبه 29 اردیبهشت 1389, 15:02 عصر
دوست عزيز ببينيد مي توانيد اين فايل پيوست من را نيز بخوانيد خيلي لطف مي كنيد اگر زود جواب من را بدهيد.
http://rapidshare.com/files/389111781/student.zip.html