首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 熟悉tagVARIANT或者AccessApplication的朋友进来看看,这是在access里面导入Paradox数据库所做的 [已结贴,结贴人:gdhuman]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-05 18:48:29 楼主
    tagVARIANT  Value;
      Value.vt  =  VT_BSTR;
      Value.bstrVal  =  L"Paradox 7.X";

    tagVARIANT  Value1;
      Value1.vt  =  VT_BSTR;
      Value1.bstrVal  =  L"D:\msoft\";


    tagVARIANT  Value2;
      Value2.vt  =  VT_BSTR;
      Value2.bstrVal  =  L"ck.db";

    tagVARIANT  Value3;
      Value3.vt  =  VT_BSTR;
      Value3.bstrVal  = L"ck";

    tagVARIANT  Value4;
      Value4.vt  =  VT_BOOL ;
      Value4.boolVal  =  VARIANT_BOOL(true);

    tagVARIANT  Value5;
    Value5.vt  =  VT_BOOL ;
    Value5.boolVal  =  VARIANT_BOOL(true);

    wchar_t*filepart;
    filepart= L"D:\d.mdb";


    AccessApplication1->Application->OpenCurrentDatabase(L"D:\d.mdb",true);
    AccessApplication1->Application->Visible=true;
    AccessApplication1->Application->DoCmd->TransferDatabase(acImport, Value,Value1, acTable, Value2, Value3, Value4,Value5);
    AccessApplication1->Quit();

    这是在access里面导入Paradox数据库所做的
    语句没有错,不知道是不是传输参数的时候出问题.没有达到预期效果
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ccrun
    • 等级:
    发表于:2008-07-05 18:51:341楼 得分:0
    Value1.bstrVal  =  L"D:\msoft\";

    这个有问题吧,至少应该是双斜杠。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-06 00:30:302楼 得分:0
    AccessApplication1->Application->DoCmd->TransferDatabase(acImport, Value,Value1, acTable, Value2, Value3, Value4,Value5);
    是这一句没有被执行
    妖哥还在用bcb吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ccrun
    • 等级:
    发表于:2008-07-06 02:25:383楼 得分:0
    我一直在用BCB,不过一直不曾用过BCB中的Office组件,我一般是通过OLE代码来搞定。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-06 16:07:454楼 得分:0
    原来原因是我把路径用D盘,程序却默认把数据库创建在D:\Administrator文档和收藏夹,难怪执行了我也找不到更新好的数据库,不过还是谢谢妖哥.
    还有一个问题就是如何把路径改在程序所在的目录下,

    Variant  Access,Docmd;
    Access=Variant::CreateObject("Access.Application");
    Access.FN("NewCurrentDatabase","D:\\msoft\\ewnetb\\atdbf\\d.mdb");
    Access.FN("OpenCurrentDatabase","D:\\msoft\\ewnetb\\atdbf\\d.mdb");
    Access.PS("Visible",true);
    Docmd=Access.PG("DoCmd");
    Docmd.PR("TransferDatabase",acImport,"Paradox 7.X","D:\\msoft\\ewnetb\\atdbf", acTable, "fck.db",
    "fck", False);
    能不能把D:\\msoft\\ewnetb\\atdbf\\d.mdb改为d.mdb,不用直接路径,我试过好象不行,请妖哥指点
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ccrun
    • 等级:
    发表于:2008-07-06 16:27:195楼 得分:20
    你先用SetCurrentDirectory设置一下当前路径,然后再试着用相对路径看看能不能成功。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-07 06:01:506楼 得分:0
    [code=C/C++]
    SetCurrentDirectory(Application->ExeName.c_str());
    Variant  Access,Docmd;
    Access=Variant::CreateObject("Access.Application");
    Access.FN("OpenCurrentDatabase","d.mdb");
    Access.PS("Visible",true);
    Docmd=Access.PG("DoCmd");
    Docmd.PR("TransferDatabase",acImport,"Paradox 7.X","D:\\msoft\\ewnetb\\atdbf", acTable, "ck.db", "ck", False);code]
    妖哥,按你所说的,红色部分应该改为什么?我用""代替就出错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-07 06:35:137楼 得分:0
    问题搞定,不过我用office控件就搞不定,原因是在类型转换中总是出问题 问题出现在红色部分

    String part=ExtractFilePath(Application->ExeName);


    tagVARIANT  Value;
      Value.vt  =  VT_BSTR;
      Value.bstrVal  =  L"Paradox 7.X";

    tagVARIANT  Value1;
      Value1.vt  =  VT_BSTR;
      Value1.bstrVal  = (WideString)part.c_str();


    tagVARIANT  Value2;
      Value2.vt  =  VT_BSTR;
      Value2.bstrVal  =  L"ck.db";

    tagVARIANT  Value3;
      Value3.vt  =  VT_BSTR;
      Value3.bstrVal  = L"ck";

    tagVARIANT  Value4;
      Value4.vt  =  VT_BOOL ;
      Value4.boolVal  =  VARIANT_BOOL(false);

    tagVARIANT  Value5;
    Value5.vt  =  VT_BOOL ;
    Value5.boolVal  =  VARIANT_BOOL(false);


    AccessApplication1->Application->NewCurrentDatabase(L"d.mdb");
    AccessApplication1->Application->OpenCurrentDatabase(L"d.mdb",true);
    AccessApplication1->Application->Visible=true;
    AccessApplication1->Application->DoCmd->TransferDatabase(acImport, Value,Value1, acTable, Value2, Value3, Value4,Value5);
    AccessApplication1->CloseCurrentDatabase();
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved