forodo
یک شنبه 24 فروردین 1393, 15:40 عصر
سلام
با تابع زیر فایل Wordای را که می خوام از بانک اطلاعاتی فراخوانی می کنم:
SqlConnection con =
new SqlConnection(clsForms.ConnectionString);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = con;
da.SelectCommand.CommandType = CommandType.Text;
da.SelectCommand.CommandText = @"SELECT FileFile, FormateFile
FROM tblLetterSadere
WHERE ID = " + Program.LetterID;
con.Open();
da.Fill(ds, "Word_Get");
con.Close();
buffer123 = (byte[])ds.Tables["Word_Get"].Rows[0]["FileFile"];
FormateFile123 = ds.Tables["Word_Get"].Rows[0]["FormateFile"].ToString();
با کدهای زیر یک فایل temp درست می کنم و فایل Wordای که از بانک فراخوانی کردم رو جایگزین اون می کنم و اون رو اجرا می کنم:
GetVaredeLetter();
string TempFile = Path.GetTempFileName();
File.WriteAllBytes(TempFile, buffer123);
File.Move(TempFile, TempFile + FormateFile123);
Process Proc = Process.Start(TempFile + FormateFile123);
ForUpdateWord = TempFile + FormateFile123;
و با تابع زیر که داخل رویداد اکتیو فرمم نوشته شده فایل Wordای رو که باز کردم و بعد از تغییرات اون رو ذخیره کردم داخل بانک ذخیره می کنم:
private void DoUpdate()
{
try
{
SqlConnection objconnection =
new SqlConnection(clsForms.ConnectionString);
SqlCommand objcommand1 = new SqlCommand();
objcommand1.Connection = objconnection;
objcommand1.CommandText = @"UPDATE tblLetterSadere
SET FileFile=@FileFile
WHERE ID = " + Program.LetterID;
objcommand1.Parameters.AddWithValue("@FileFile", File.ReadAllBytes(ForUpdateWord));
objconnection.Open();
objcommand1.ExecuteNonQuery();
objconnection.Close();
}
catch (Exception)
{
}
}
حالا مشکل اینجاست که بعضی موقع ها که با CTRL+S ورد رو سیو می کنم داخل بانک ذخیره می شه ولی بعضی مواقع ذخیره نمی شه.
با تابع زیر فایل Wordای را که می خوام از بانک اطلاعاتی فراخوانی می کنم:
SqlConnection con =
new SqlConnection(clsForms.ConnectionString);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = con;
da.SelectCommand.CommandType = CommandType.Text;
da.SelectCommand.CommandText = @"SELECT FileFile, FormateFile
FROM tblLetterSadere
WHERE ID = " + Program.LetterID;
con.Open();
da.Fill(ds, "Word_Get");
con.Close();
buffer123 = (byte[])ds.Tables["Word_Get"].Rows[0]["FileFile"];
FormateFile123 = ds.Tables["Word_Get"].Rows[0]["FormateFile"].ToString();
با کدهای زیر یک فایل temp درست می کنم و فایل Wordای که از بانک فراخوانی کردم رو جایگزین اون می کنم و اون رو اجرا می کنم:
GetVaredeLetter();
string TempFile = Path.GetTempFileName();
File.WriteAllBytes(TempFile, buffer123);
File.Move(TempFile, TempFile + FormateFile123);
Process Proc = Process.Start(TempFile + FormateFile123);
ForUpdateWord = TempFile + FormateFile123;
و با تابع زیر که داخل رویداد اکتیو فرمم نوشته شده فایل Wordای رو که باز کردم و بعد از تغییرات اون رو ذخیره کردم داخل بانک ذخیره می کنم:
private void DoUpdate()
{
try
{
SqlConnection objconnection =
new SqlConnection(clsForms.ConnectionString);
SqlCommand objcommand1 = new SqlCommand();
objcommand1.Connection = objconnection;
objcommand1.CommandText = @"UPDATE tblLetterSadere
SET FileFile=@FileFile
WHERE ID = " + Program.LetterID;
objcommand1.Parameters.AddWithValue("@FileFile", File.ReadAllBytes(ForUpdateWord));
objconnection.Open();
objcommand1.ExecuteNonQuery();
objconnection.Close();
}
catch (Exception)
{
}
}
حالا مشکل اینجاست که بعضی موقع ها که با CTRL+S ورد رو سیو می کنم داخل بانک ذخیره می شه ولی بعضی مواقع ذخیره نمی شه.