سلام
با تابع زیر فایل 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 ورد رو سیو می کنم داخل بانک ذخیره می شه ولی بعضی مواقع ذخیره نمی شه.