PDA

View Full Version : نحوه اضافه و حذف تیبل ها در دیتابیس اگسس به طریقه کد نویسی ؟؟؟؟



aidin2345
چهارشنبه 10 اردیبهشت 1399, 15:16 عصر
یه بانک اطلاعاتی اگسس 2007 که به برنامه متصله رو چطور میشه از طریق کد نویسی چک کنیم که مثلا : تیبل xxxxx رو ببینه هست یا نیست
اگر بود بره داخلش فیلد ها رو چک کنه که فیلدی با نام YYYYY از نوع تکست یا نامبر هست یا نیست و اگر نبود اون فیلد رو بسازه ؟؟؟

اگر هم نه تیبلی به اون اسم بود و نه فیلدی داخلش نبود هم تیبل xxxxx رو بسازه و فیلد yyyyy رو داخل اون بسازه ؟؟؟



اگر هم تیبل و فیلد ها بودن هم کاری انجام نده
و در نهایت تغییرات رو اعمال کنه - و آسیبی به دیتای داخل اگسس نزنه

hamidrezax1
چهارشنبه 10 اردیبهشت 1399, 20:16 عصر
سلام دوست عزیز الان دقیقا شما مشکلتون کجاست؟
ارتباط با دیتابیس رو بلد نیستین یا کلا کار با IF رو مشکل دارید؟

aidin2345
چهارشنبه 10 اردیبهشت 1399, 22:53 عصر
سلام دوست عزیز الان دقیقا شما مشکلتون کجاست؟
ارتباط با دیتابیس رو بلد نیستین یا کلا کار با IF رو مشکل دارید؟
سلام
نه عزیز کار با دیتا بیس و شروط رو مشکل ندارم
یه برنامه ای قبلا نوشتم با بانک اگسس و جدیدا یه سری تغیرات دادم روی برنامه
مشکل اینه که وقتی آپدیت رو برا مشتری میفرستم اونا توی برنامه شون بعضی تغییراتی که من توی دیتا دادم رو ندارن و برنامه خطا میده ( دیتا بیسشون تغیر کرده با مال من )


میخوام آپدیت جدیدی که به افراد میفرستم اول دیتا بیس رو چک کنه ( و اسم تیبل و فیلد رو که من مشخص میکنم رو توی دیتا بررسی کنه که هست یا نیست)
و تیبل و فیلد هایی که کم هستش و نیازه رو بسازه و دیتا رو ذخیره کنه

اگر هم که تیبل و فیلد ها بودن که هیچ کاری انجام نده

aidin2345
شنبه 13 اردیبهشت 1399, 21:14 عصر
دوستان لطفا کمک کنین

Mahmoud.Afrad
یک شنبه 14 اردیبهشت 1399, 03:00 صبح
با اجرای اسکریپت جدول را ایجاد کنید. اگر جدول وجود داشته باشد استثنا با شماره خاصی رخ میدهد
https://stackoverflow.com/a/4793667

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




راه دیگر هم استفاده از schema هست
https://stackoverflow.com/a/12148868

aidin2345
دوشنبه 15 اردیبهشت 1399, 01:22 صبح
Mahmoud.Afrad (https://barnamenevis.org/member.php?71297-Mahmoud-Afrad) دستت درد نکنه
خیلی کمک کرد

کد هایی که توی سایتی که گفته بودی رو کلا به هم ریختم و اصلاح کردم
و کد ها رو قرار میدم اگه کسی مایل بود استفاده کنه


اینا برای #C



//======================== اینجا بررسی میکنه که نام تیبل هست یا نیست و اگر نباشه هم کالمن های گفته شده رو میسازه و هم خود تیبل رو
//======================== و اگر هم نام تیبل موجود بود خطا میده و کالمن رو هم نمیسازه



{
OleDb.OleDbConnection CON = new OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\DATA.mdb");
CON.Open();
OleDb.OleDbCommand cmd = new OleDb.OleDbCommand();
cmd.Connection = CON;
cmd.CommandText = "create table Users(UserID int,Fname nvarchar(50),Lname nvarchar(50),Email nvarchar(30),Pass nvarchar(60))";
try {
cmd.ExecuteNonQuery();
cmd.Connection.Close();
} catch (Exception ex) {
MsgBox("تیبل یافت نشد");
}

if (CON.State == ConnectionState.Open) {
CON.Close();
}
}






//================================================== = اینجا در صورت وجود نام تیبل کالمن ها رو میسازد و اگه تیبل نبود خطا میده
//==== از
//====try
//=== استفاده شده برای اینکه اگر کالمن ی بود خطا نده و ایجاد نکنه


{
OleDb.OleDbConnection con = new OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\DATA.mdb");
con.Open();
OleDb.OleDbCommand cmd = new OleDb.OleDbCommand();
// OleDbCommand cmd = New OleDbCommand()
cmd.Connection = con;


try {
cmd.CommandText = "alter table Users ADD dddddd4d int NOT NULL ";
} catch (Exception ex) {
}

try {
cmd.CommandText = "alter table Users ADD ssss4s nvarchar(60) ";
} catch (Exception ex) {
}

try {
cmd.CommandText = "alter table Users ADD moradi488 nvarchar(32) ";

} catch (Exception ex) {
}

try {
cmd.ExecuteNonQuery();
con.Close();
} catch (Exception ex) {
//MsgBox("تیبل یافت نشد")
}
if (con.State == ConnectionState.Open) {
con.Close();
}

}





اینا هم برا vb




'======================== اینجا بررسی میکنه که نام تیبل هست یا نیست و اگر نباشه هم کالمن های گفته شده رو میسازه و هم خود تیبل رو
'======================== و اگر هم نام تیبل موجود بود خطا میده و کالمن رو هم نمیسازه


Dim CON As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\DATA.mdb")
CON.Open()
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = CON
cmd.CommandText = "create table Users(UserID int,Fname nvarchar(50),Lname nvarchar(50),Email nvarchar(30),Pass nvarchar(60))"
Try
cmd.ExecuteNonQuery()
cmd.Connection.Close()
Catch ex As Exception
MsgBox("تیبل یافت نشد")
End Try

If CON.State = ConnectionState.Open Then
CON.Close()
End If

End Sub







'================================================= == اینجا در صورت وجود نام تیبل کالمن ها رو میسازد و اگه تیبل نبود خطا میده
'==== از
'====try
'=== استفاده شده برای اینکه اگر کالمن ی بود خطا نده و ایجاد نکنه

Dim con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\DATA\BASE\SAL0001\DATA.mdb")
con.Open()
Dim cmd As New OleDb.OleDbCommand ' OleDbCommand cmd = New OleDbCommand()
cmd.Connection = con


Try
cmd.CommandText = "alter table Users ADD dddddd4d int NOT NULL "
Catch ex As Exception
End Try

Try
cmd.CommandText = "alter table Users ADD ssss4s nvarchar(60) "
Catch ex As Exception
End Try

Try
cmd.CommandText = "alter table Users ADD moradi488 nvarchar(32) "
Catch ex As Exception

End Try

Try
cmd.ExecuteNonQuery()
con.Close()
Catch ex As Exception
'MsgBox("تیبل یافت نشد")
End Try
If con.State = ConnectionState.Open Then
con.Close()
End If

aidin2345
دوشنبه 15 اردیبهشت 1399, 01:25 صبح
برای Sql هم جواب میده و فقط باید کانکشن و کامند رو اسکیو ال کرد

Mahmoud.Afrad
دوشنبه 15 اردیبهشت 1399, 02:47 صبح
همونطور که گفتم برای اینکه با اطمینان بگید خطا به خاطر وجود جدول یا ستون هست باید شماره خطا رو بررسی کنید. شاید خطای دیگری رخ بده که در اونصورت متوجه اصل مشکل نمیشید.

aidin2345
سه شنبه 16 اردیبهشت 1399, 21:14 عصر
[QUOTE=Mahmoud.Afrad;2430821]همونطور که گفتم برای اینکه با اطمینان بگید خطا به خاطر وجود جدول یا ستون هست باید شماره خطا رو بررسی کنید. شاید خطای دیگری رخ بده که در اونصورت متوجه اصل مشکل نمیشید.[/QUOT

درسته
اما اگر توی دیتا و روند کار مشکلی وجود نداشته باشه
به درد بخوره


اما باز میشه کد ها رو داخل Try به صورت زیر قرار داد



try
{
// کد ها

}
catch(OleDbException e)
{


if(e.ErrorCode == 3010 || e.ErrorCode == 3012)



// در صورت بروز خطا هم کد های دلخواه رو انجام بده


}