Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缺少AxHost.GetPictureFromIPicture()方法,正在从MS Access数据库检索图片(附件)_C#_Ms Access_Method Missing_Axhost_Getpicture - Fatal编程技术网

C# 缺少AxHost.GetPictureFromIPicture()方法,正在从MS Access数据库检索图片(附件)

C# 缺少AxHost.GetPictureFromIPicture()方法,正在从MS Access数据库检索图片(附件),c#,ms-access,method-missing,axhost,getpicture,C#,Ms Access,Method Missing,Axhost,Getpicture,我正在尝试使用AxHost.GetPictureFromIPicture()从MS Access 2013数据库文件(*.accdb)获取GIF图像(另存为附件类型)-将其转换为图像,以便在PictureBox中显示。但方法不存在!:(我是否遗漏了什么?我是否需要设置或安装smtg 如果不进行转换,我会出现以下错误:“无法将'System.\u ComObject'类型的COM对象强制转换为'System.Drawing.Image'类型的类” 我真的用正确的方法做了整个事情吗?还是有更好的解决

我正在尝试使用AxHost.GetPictureFromIPicture()从MS Access 2013数据库文件(*.accdb)获取GIF图像(另存为附件类型)-将其转换为图像,以便在PictureBox中显示。但方法不存在!:(我是否遗漏了什么?我是否需要设置或安装smtg

如果不进行转换,我会出现以下错误:“无法将'System.\u ComObject'类型的COM对象强制转换为'System.Drawing.Image'类型的类”

我真的用正确的方法做了整个事情吗?还是有更好的解决办法?请帮帮我

DBEngine dbe = new DBEngine();
Database db = dbe.OpenDatabase("Database1.accdb", false, false, "");
Recordset rs = db.OpenRecordset("select solution from tab2 where id = 1", RecordsetTypeEnum.dbOpenDynaset, 0, LockTypeEnum.dbOptimistic);
rs.MoveFirst();

object o = rs.Fields[0].Value;
Image img = (Image)o; -> error
Image img = AxHost.GetPictureFromIPicture(o); - the method is missing
pictureBox1.Image = img;

rs.Close();
该文件称

通常不直接使用AxHost类。可以使用Windows窗体ActiveX控件导入器(Aximp.exe)生成扩展AxHost的包装器

我必须承认,我没有尝试过这种方法。据我所知,从Access数据库中的附件字段可靠提取文件的唯一方法是使用ACE DAO
Field2
对象的
.SaveToFile()
方法。在您的情况下,代码如下所示:

公共部分类表单1:表单
{
字符串文件名;
图像img;
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
DBEngine dbe=新的DBEngine();
Database db=dbe.OpenDatabase(@“C:\Users\Public\AttachmentsDB.accdb”);
Recordset rsMain=db.OpenRecordset(
“从id=1的选项卡2中选择解决方案”,
RecordsetTypeEnum.dbOpenSnapshot);
Recordset2 rsAttach=rsMain.Fields[“解决方案”].Value;
tempFileName=System.IO.Path.GetTempPath()+“\\”+rsAttach.Fields[“FileName”].Value;
尝试
{
System.IO.File.Delete(tempFileName);
}
捕获{}
Field2 fldAttach=(Field2)rsAttach.Fields[“FileData”];
fldAttach.SaveToFile(tempFileName);
rsAttach.Close();
rsMain.Close();
db.Close();
img=Image.FromFile(tempFileName);
pictureBox1.Image=img;
}
私有void Form1\u FormClosed(对象发送方,FormClosedEventArgs e)
{
img.Dispose();
System.IO.File.Delete(tempFileName);
}
}