PDA

View Full Version : رکوردی که با بستن برنامه حذف میشه !



mohsenmxp
جمعه 20 مرداد 1391, 18:22 عصر
با سلام به دوستان
کدی نوشتم که رکوردی رو در بانک دخیره میکنه - اما با بستن برنامه و باز کردن مجدد اون رکوردی که اخیرا وارد شده حذف میشه
حتی در فرم های دیکه از ثبت رکورد اطمینان حاصل کردم - اما کافیه برنامه بسته بشه تا رکورد از بین بره
راهنماییی کنید ممنون میشم :ناراحت:
فرم اصلی:



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.Data.OleDb;
namespace II_Contacts
{
public partial class Main : Form
{
OleDbConnection Con = new OleDbConnection();
OleDbDataAdapter Da = new OleDbDataAdapter();
DataSet Ds = new DataSet();
OleDbCommand Cmd = new OleDbCommand();
private void Connect()
{
Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\DB.mdb";
}
private DataSet LoadAll()
{
Ds.Clear();
Connect();
Cmd.CommandText = "select * from C";
Cmd.Connection = Con;
Da.SelectCommand = Cmd;
Con.Open();
Da.Fill(Ds, "dBDataDet");
Con.Close();
dataGridView1.DataSource = Ds;
dataGridView1.DataMember = "dBDataDet";
dataGridView1.ClearSelection();

return Ds;
}

public Main()
{
InitializeComponent();
}

private void Main_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dBDataSet.C' table. You can move, or remove it, as needed.
this.cTableAdapter.Fill(this.dBDataSet.C);


LoadAll();
dataGridView1.ReadOnly = true;
}

private void button2_Click(object sender, EventArgs e)
{
New_Contact Frm = new New_Contact();
Frm.ShowDialog();

}

private void button3_Click(object sender, EventArgs e)
{

LoadAll();

}

private void textBox1_TextChanged(object sender, EventArgs e)
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\DB.mdb";
OleDbConnection Con = new OleDbConnection(strCon);
Con.Open();
OleDbDataAdapter Da = new OleDbDataAdapter("select * from C where FN Like '" + textBox1.Text + "%' Or LN Like '" + textBox1.Text + "%' ", Con);
DataTable dt = new DataTable();
Da.Fill(dt);
dataGridView1.DataSource = dt;
Con.Close();
if (textBox1.Text == "") dataGridView1.ClearSelection();
}





private void button6_Click(object sender, EventArgs e)
{
dataGridView1.ClearSelection();
button6.Visible = false;
MessageBox.Show("Are you sure to delete this Contact?", "Delete Contact", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
}


}
}




فرم ADD :



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.Data.OleDb;
using System.Collections;
using System.IO;
namespace II_Contacts
{
public partial class New_Contact : Form
{
OleDbConnection Con = new OleDbConnection();
OleDbDataAdapter Da = new OleDbDataAdapter();
DataSet Ds = new DataSet();
OleDbCommand Cmd = new OleDbCommand();
ArrayList Arr = new ArrayList();
private OleDbDataReader Dr;
private void Connect()
{
Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\DB.mdb";
}
private DataSet LoadAll()
{
Connect();
Cmd.CommandText = "select * from C";
Cmd.Connection = Con;
Da.SelectCommand = Cmd;
Con.Open();
Da.Fill(Ds, "dbDataDet");
Con.Close();
return Ds;
}
public New_Contact()
{
InitializeComponent();
}


private void button1_Click(object sender, EventArgs e)
{
Ds.Clear();
Arr.Add(textBox1.Text);
Arr.Add(textBox2.Text);
Arr.Add(textBox3.Text);
Arr.Add(textBox4.Text);
Arr.Add(textBox5.Text);
Arr.Add(textBox6.Text);
Cmd.CommandText = "insert into C(FN,LN,P1,P2,M1,M2)Values(@FN,@LN,@P1,@P2,@M1,@M2 )";
Cmd.Parameters.Clear();
Cmd.Parameters.Add("@FN", SqlDbType.NVarChar).Value = Arr[0].ToString();
Cmd.Parameters.Add("@LN", SqlDbType.NVarChar).Value = Arr[1].ToString();
Cmd.Parameters.Add("@P1", SqlDbType.NVarChar).Value = Arr[2].ToString();
Cmd.Parameters.Add("@P2", SqlDbType.NVarChar).Value = Arr[3].ToString();
Cmd.Parameters.Add("@M1", SqlDbType.NVarChar).Value = Arr[4].ToString();
Cmd.Parameters.Add("@M2", SqlDbType.NVarChar).Value = Arr[5].ToString();
Insert(Cmd);
LoadAll();
dataGridView1.DataSource = Ds;
dataGridView1.DataMember = "dbDataDet";
MessageBox.Show("Done", "Add", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void Insert(OleDbCommand Cmd)
{
Connect();
Cmd.Connection = Con;
Con.Open();
Cmd.ExecuteNonQuery();
Con.Close();
}


}
}

mohsenmxp
شنبه 21 مرداد 1391, 17:54 عصر
کسی ممکنه راهنماییم کنه ؟

hakim22
شنبه 21 مرداد 1391, 18:25 عصر
مشکل شما اینه که همش از fill استفاده کردید. کار fill گزارش گیری و گرفتن اطلاعات از دیتابیسه و برای اینکه یک جدول یا رکورد رو به دیتابیس اضافه کنید باید از متد update در آداپتور استفاده کنید بجای fill

ظاهرا بقیش درسته .

h_r_sh
شنبه 21 مرداد 1391, 21:17 عصر
private DataSet LoadAll()
{
Connect();
Cmd.CommandText = "select * from C";
Cmd.Connection = Con;
Da.SelectCommand = Cmd;
Con.Open();
Da.Fill(Ds);
Con.Close();
dataGridView1.DataSource = Ds.Tables[0];
return Ds;
}



private void button1_Click(object sender, EventArgs e)
{
Ds.Clear();
Arr.Add(textBox1.Text);
Arr.Add(textBox2.Text);
Arr.Add(textBox3.Text);
Arr.Add(textBox4.Text);
Arr.Add(textBox5.Text);
Arr.Add(textBox6.Text);
Cmd.CommandText = "insert into C(FN,LN,P1,P2,M1,M2)Values(@FN,@LN,@P1,@P2,@M1,@M2 )";
Cmd.Parameters.Clear();
Cmd.Parameters.Add("@FN", SqlDbType.NVarChar).Value = Arr[0].ToString();
Cmd.Parameters.Add("@LN", SqlDbType.NVarChar).Value = Arr[1].ToString();
Cmd.Parameters.Add("@P1", SqlDbType.NVarChar).Value = Arr[2].ToString();
Cmd.Parameters.Add("@P2", SqlDbType.NVarChar).Value = Arr[3].ToString();
Cmd.Parameters.Add("@M1", SqlDbType.NVarChar).Value = Arr[4].ToString();
Cmd.Parameters.Add("@M2", SqlDbType.NVarChar).Value = Arr[5].ToString();
Insert(Cmd);
LoadAll();
MessageBox.Show("Done", "Add", MessageBoxButtons.OK, MessageBoxIcon.Information);
}



private void Form2_Load(object sender, EventArgs e)
{
LoadAll();
}

mohsenmxp
شنبه 21 مرداد 1391, 22:01 عصر
کد اشتباهه؟

h_r_sh
یک شنبه 22 مرداد 1391, 21:11 عصر
کد اشتباهه؟
یه چندتا تغییر کوچک داشته، باقی درسته...

mojtaba_kz
دوشنبه 23 مرداد 1391, 02:04 صبح
سلام دوست عزیز؛

منم مشکل شما رو داشتم با دوستان مطرح کردم ،متوجه شدم مشکل از کجاست؟؟

http://barnamenevis.org/showthread.php?356048-بی-ثباتی-اطلاعات-بعد-از-درج-در-بانک

اگر برنامه اجرایی رو از پوشه Bin باز کنی به احتمال زیاد مشکلی پیش نخواهد آمد...
خدانگهدار

majidrezaei2007
دوشنبه 23 مرداد 1391, 02:38 صبح
به نظرم از این کار برای نگهداری یک سری تنظیمات دارین استفاده می کنید . یا یک سری داده های اضافی یا کمکی
پیشنهادم اینه که از رجیستری استفاده کنید

ali.bahrami
دوشنبه 23 مرداد 1391, 09:44 صبح
دوست عزیز من طبق گفته ی شما و جوابهای دوستان درست متوجه نشدم ... یعنی شما وقتی فرم را می بندی رکورد از بانک حذف میشه !!!!!؟ یا توی برنامت نمایش نمیده ؟

mohsenmxp
دوشنبه 23 مرداد 1391, 18:07 عصر
دوست عزیز من طبق گفته ی شما و جوابهای دوستان درست متوجه نشدم ... یعنی شما وقتی فرم را می بندی رکورد از بانک حذف میشه !!!!!؟ یا توی برنامت نمایش نمیده ؟
وقتی برنامه رو می بندم با دیباگ گیری مجدد رکورد قبلی یافت نمی شد !
چاره ای نبود و کد رو به شکل دیگه ای نوشتم تا مشکل برطرف بشه