PDA

View Full Version : حرفه ای: چگونه database جدید در برنامه به صورت اتوماتیک ایجاد کنیم



amirreza33
پنج شنبه 03 بهمن 1392, 17:40 عصر
سلام دوستان من یک برنامه انبار داری نوشتم میخوام که وقتی سال مالی تمام بشه وقتی از برنامه ام بک آپ میگیرم دیتابیس اون مثلا با نام 92 ذخیره بشه و دیتابیس جدید با همون فیلد ها و ... به نام 93 ایجاد بشه و از اون زمان به بعد کلیه دیتا ها در 93 ذخیره بشن و بک آپ ها هم دیگه از نود و سه گرفته بشه کسی میتونه راهنماییم کنه؟!!!!!؟؟؟؟؟!!!!؟؟؟؟؟؟؟؟؟

hamid_hr
پنج شنبه 03 بهمن 1392, 19:22 عصر
برا ساختن دیتابیس باید ی نمونه از دیتابیسو به صورت اسکریپت در بیاری و زمانش که رسید اجراش کنی

samsam_ninja
پنج شنبه 03 بهمن 1392, 20:21 عصر
همون طوری که دستور سلکت رو اجرا میکنی ( یا هر دستور دیگه ) به جاش دستور ایجاد یه دیتابیس جدید رو اجرا کن!

دستورش رو با سرچ راهت میتونی پیدا کنی یا اصلن خودت اسکریپتش رو تو sql بدست بیاری!

rasol_afkham
پنج شنبه 03 بهمن 1392, 21:37 عصر
در لینک زیر می تونی یک فایل در قالب Word 2007 دانلود کنی که بعضی از دستورات پرکاربرد SQL رو داره
http://uploadboy.com/whdzns1lalik.html
موفق باشی ...!

اگه لینک خراب از این یکی استفاده کنید

amirreza33
یک شنبه 06 بهمن 1392, 12:19 عصر
برا ساختن دیتابیس باید ی نمونه از دیتابیسو به صورت اسکریپت در بیاری و زمانش که رسید اجراش کنی
خب بعدش چ جوری به برنامه بفهمونم از حالا به بعد اطلاعات را داخل دیتا بیس جدبد ذخیره کنه در ضمن دیتابیس من اکسس هست

amirreza33
یک شنبه 06 بهمن 1392, 12:21 عصر
همون طوری که دستور سلکت رو اجرا میکنی ( یا هر دستور دیگه ) به جاش دستور ایجاد یه دیتابیس جدید رو اجرا کن!

دستورش رو با سرچ راهت میتونی پیدا کنی یا اصلن خودت اسکریپتش رو تو sql بدست بیاری!
دیتا بیس من اکسس هست اینکارم که بکنم چطور به برنامه بفمونم
اطلاعات رو داخل دیتا بیس جدید ذخیره کنه؟

Sepehrnoush
یک شنبه 06 بهمن 1392, 13:19 عصر
برای مثال اگر شما توی برنامتون از یک string برای ذخیره ی نام دیتابیس استفاده می کنید، به جای یک عبارت فیکس از متغیر استفاده کنید.

string dbName = bahman92;
string DataSource = String.Format("Data Source={0};version=3;", dbName)

محمد رضا فاتحی
جمعه 07 آذر 1393, 16:54 عصر
یه پیشنهاد
می تونی یه جدول با عنوان سال مالی ایجاد کنی و به کاربر امکان ایجاد و انتخاب سال مالی رو بده بعد توی هر جدولت که به سال مالی مربوطه یه فیلد بزار و سال مالی رو توش قرار بده
اینجوری یه حسنی داره اینه که می تونی توی گزرشات همه سالهای مالی رو ارائه بدی و دردسر ساخت دیتابیس به صورت اسکریپت رو نداری و اطلاعات سالهای مالی قبلت هم از بین نمیره

alexmcse
شنبه 10 بهمن 1394, 19:16 عصر
سلام دوستان من یک برنامه انبار داری نوشتم میخوام که وقتی سال مالی تمام بشه وقتی از برنامه ام بک آپ میگیرم دیتابیس اون مثلا با نام 92 ذخیره بشه و دیتابیس جدید با همون فیلد ها و ... به نام 93 ایجاد بشه و از اون زمان به بعد کلیه دیتا ها در 93 ذخیره بشن و بک آپ ها هم دیگه از نود و سه گرفته بشه کسی میتونه راهنماییم کنه؟!!!!!؟؟؟؟؟!!!!؟؟؟؟؟؟؟؟؟

برو به این لینک
تاپیک دوست عزیز khokhan

http://barnamenevis.org/showthread.php?456906-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DA%A9%D8%A7%D9%85%D9%84-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A8%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AE%D9%88%D8%AF-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A8%D8%A7-%D8%AA%D9%85%D8%A7%D9%85-%D8%AC%D8%B2%D8%A6%DB%8C%D8%A7%D8%AA-%D8%AF%D8%B1-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A8%D8%A7-EF&highlight=%D8%B3%D8%A7%D8%AE%D8%AA%D9%86+%D8%AF%DB %8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3

ژیار رحیمی
یک شنبه 11 بهمن 1394, 02:45 صبح
دیتا بیس من اکسس هست اینکارم که بکنم چطور به برنامه بفمونم
اطلاعات رو داخل دیتا بیس جدید ذخیره کنه؟

چون دیتابیس شما Access هست شما باید یه فایل دیتابیس که خالی(فاقد رکورد) رو یا در کنار پروژه داشته (برای سالی مالی جدید)باشی و یا میتونی جهت امنیت فایل دیتابیس (خالی) رو به ریسورس پروژه اضافه کنی موقع تغییر سالی مالی بوسیله کد نمونه ای از فایل دیتابیس رو با نام جدید(سالی مالی جدید) در مسیری که میخواهی کپی میکنی و با استفاده از تغییر ConnectionString به دیتابیس جدید وصل میشی.
البته میشه با کد#C هم خود فایل دیتابیس و هم جداول آن رو بسازی و روش Script که در بالا دوستان راهنمایی کردن برای دیتابیس SqlSerevr هست به روش اسکریپت (sql script)نمیشه خود فایل دیتابیس Access رو ساخت.ولی افزودن جداول با اسکریپت به دیتابیس ساخته شده این امکان وجود دارد.

khokhan
یک شنبه 11 بهمن 1394, 19:04 عصر
دیتا بیس من اکسس هست اینکارم که بکنم چطور به برنامه بفمونم
اطلاعات رو داخل دیتا بیس جدید ذخیره کنه؟
یه مکانیسم ایجاد کن تا عنوان سال جاری رو باهاش بدست بیاری ....... مثلا می تونی با کلاس PersianCalendar تاریخ شمسی رو بگیری
بعد موقع ایجاد فایل اکسس همین تاریخ رو به عنوان نام و به صورت رشته براش اختصاص بدی
در ادامه هم می شه کاری کرد که با فشار دادن دکمه "بستن سال " یه فایل جدید و با یک نام جدید ایجاد نمود و نام ایجاد شده رو هم زمان توی یه متغییر درون seting ذخیره نمود
و دفعه بعد که وارد سیستم می شیم اون رشته رو بخونیم و بریزیم توی رشته اتصال تا فایلی که مربوط به سال مال جاری است رو فراخوانی بکنه

ساختن فایل دیتابیس access هم کاری نداره کافیه تا مطابق روش زیر عمل کنین :

برای این کار اول باید رفرنس های زیر رو به برنامه ادد کنید :
1- از تب net رفرنس adodb رو ادد کنید
2- از تب com رفرنس Microsoft ADO Ext. 2.8 for DDL and Security رو ادد کنید
3- using های زیر رو انجام میدیم :


using ADODB;
using ADOX;

.................................................. ...................


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace accessdbMaker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public bool CreateNewAccessDatabase(string fileName)
{

bool result = false;

ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table table = new ADOX.Table();

table.Name = "Factors";
table.Columns.Append("FA_id", ADOX.DataTypeEnum.adInteger, 4);
table.Columns.Append("kala", ADOX.DataTypeEnum.adInteger, 4);
table.Columns.Append("cost_id", ADOX.DataTypeEnum.adInteger, 4);
table.Columns.Append("Gimat", ADOX.DataTypeEnum.adInteger, 10);
table.Columns.Append("Tarikh", ADOX.DataTypeEnum.adDate);
table.Columns.Append("uoser", ADOX.DataTypeEnum.adInteger, 8);
table.Columns.Append("Resid", ADOX.DataTypeEnum.adBoolean);



try
{
cat.Create(@"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ".mdb; Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=YourPass;");
cat.Tables.Append(table);

ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
if (con != null)
con.Close();

result = true;
}
catch (Exception ex)
{
result = false;
if (File.Exists(fileName + ".mdb"))
{
File.Delete(fileName + ".mdb");
}
MessageBox.Show(ex.Message.ToString());
}
cat = null;

return result;
}

private void button1_Click(object sender, EventArgs e)
{
CreateNewAccessDatabase("matan");
MessageBox.Show("همه چیز عالی پیش رفت ....فایل دیتابیس درون پوشه اصلی برنامه موجود است");
}
}
}

alexmcse
یک شنبه 11 بهمن 1394, 19:47 عصر
یه مکانیسم ایجاد کن تا عنوان سال جاری رو باهاش بدست بیاری ....... مثلا می تونی با کلاس PersianCalendar تاریخ شمسی رو بگیری
بعد موقع ایجاد فایل اکسس همین تاریخ رو به عنوان نام و به صورت رشته براش اختصاص بدی
در ادامه هم می شه کاری کرد که با فشار دادن دکمه "بستن سال " یه فایل جدید و با یک نام جدید ایجاد نمود و نام ایجاد شده رو هم زمان توی یه متغییر درون seting ذخیره نمود
و دفعه بعد که وارد سیستم می شیم اون رشته رو بخونیم و بریزیم توی رشته اتصال تا فایلی که مربوط به سال مال جاری است رو فراخوانی بکنه

ساختن فایل دیتابیس access هم کاری نداره کافیه تا مطابق روش زیر عمل کنین :

برای این کار اول باید رفرنس های زیر رو به برنامه ادد کنید :
1- از تب net رفرنس adodb رو ادد کنید
2- از تب com رفرنس Microsoft ADO Ext. 2.8 for DDL and Security رو ادد کنید
3- using های زیر رو انجام میدیم :


using ADODB;
using ADOX;

.................................................. ...................


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace accessdbMaker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public bool CreateNewAccessDatabase(string fileName)
{

bool result = false;

ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table table = new ADOX.Table();

table.Name = "Factors";
table.Columns.Append("FA_id", ADOX.DataTypeEnum.adInteger, 4);
table.Columns.Append("kala", ADOX.DataTypeEnum.adInteger, 4);
table.Columns.Append("cost_id", ADOX.DataTypeEnum.adInteger, 4);
table.Columns.Append("Gimat", ADOX.DataTypeEnum.adInteger, 10);
table.Columns.Append("Tarikh", ADOX.DataTypeEnum.adDate);
table.Columns.Append("uoser", ADOX.DataTypeEnum.adInteger, 8);
table.Columns.Append("Resid", ADOX.DataTypeEnum.adBoolean);



try
{
cat.Create(@"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ".mdb; Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=YourPass;");
cat.Tables.Append(table);

ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
if (con != null)
con.Close();

result = true;
}
catch (Exception ex)
{
result = false;
if (File.Exists(fileName + ".mdb"))
{
File.Delete(fileName + ".mdb");
}
MessageBox.Show(ex.Message.ToString());
}
cat = null;

return result;
}

private void button1_Click(object sender, EventArgs e)
{
CreateNewAccessDatabase("matan");
MessageBox.Show("همه چیز عالی پیش رفت ....فایل دیتابیس درون پوشه اصلی برنامه موجود است");
}
}
}


استاد می توانید بیشتر توضیح دهید تب net کجاست ؟
کار این
adodb چیه؟

khokhan
یک شنبه 11 بهمن 1394, 20:09 عصر
استاد می توانید بیشتر توضیح دهید تب net کجاست ؟
کار این
adodb چیه؟


این دو تا رفرنس مخصوص کار با فایلهای access از مجموعه آفیس هستند که توی هر سیستمی که آفیس توش باشه نصب می شن
البته می تونین توی پروژه خودتون اضافه کنین تا اگه احیانا توی کلاینت مقصد آفیس نصب نبود دچار مشکل نشین

منظور از تب هم اینه که وقتی می خواین رفرنسی رو توی پروژه تون اضافه کنین در پنجره باز شده 5 عدد تب وجود داره که از سمت چپ اولی net و دومی com نام داره :لبخند: