VC写得ODBC数据库程序如何打包制成安装程序呀?还有就是如果里面还对一个控件注册怎么做呀

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=1346
      

  2.   

    伯虎兄您好!您推荐的贴子我已看过,因为下不到要用的软件,我就用了SQLConfigDataSource这个函数,但是出了个错“ODBC_ERROR_COMPONENT_NOT_FOUND”,不知老兄您是否有时间帮忙解决下,下面是我的代码:
    #include <stdio.h>#include <windows.h>#include "sql.h"#include <odbcinst.h>
    #include "io.h"
    main()
    {
    RETCODE retcode;
    unsigned long pfErrorCode;
    char dsn[1024]="DSN=swyy\0FIL=MS Access\0DRIVERID=25\0DRIVER=";
    char path[512];
    char driver[]="\\odbcjt32.dll\0";
    char database[]="\\data\\swyy.mdb\0";
    int i,length;
    char *offset;
    offset=dsn+42;
    for(i=0;i<512;i++)
    path[i]=0;
    length=GetSystemDirectory(path,512);
    for(i=0;i<length;i++)
    {
    *offset=path[i];
    offset++;
    }
    for(i=0;driver[i]!=0;i++)
    {
    *offset=driver[i];
    offset++;
    }
    *offset=0;
    offset++;
    *offset='D';
    offset++;
    *offset='B';
    offset++;
    *offset='Q';
    offset++;
    *offset='=';
    offset++;
    for(i=0;i<512;i++)
    path[i]=0;
    length=GetCurrentDirectory(512,path);
    for(i=0;i<length;i++)
    {
    *offset=path[i];
    offset++;
    }
    for(i=0;database[i]!=0;i++)
    {
    *offset=database[i];
    offset++;
    }
    *offset=0;
    if(SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN, "MS Access",dsn))
    printf("ok");
    else
    retcode=SQLInstallerError(1, &pfErrorCode,NULL,20,NULL);
    switch(pfErrorCode)
    {
    case ODBC_ERROR_GENERAL_ERR:
    printf("ODBC_ERROR_GENERAL_ERR");
    break;
    case ODBC_ERROR_INVALID_HWND:
    printf("ODBC_ERROR_INVALID_HWND");
    break;
    case ODBC_ERROR_INVALID_REQUEST_TYPE:
    printf("ODBC_ERROR_INVALID_REQUEST_TYPE");
    break;
    case ODBC_ERROR_INVALID_NAME:
    printf("ODBC_ERROR_INVALID_NAME");
    break;
    case ODBC_ERROR_INVALID_KEYWORD_VALUE:
    printf("ODBC_ERROR_INVALID_KEYWORD_VALUE");
    break;
    case ODBC_ERROR_REQUEST_FAILED:
    printf("ODBC_ERROR_REQUEST_FAILED");
    break;
    case ODBC_ERROR_COMPONENT_NOT_FOUND:
    printf("ODBC_ERROR_COMPONENT_NOT_FOUND");
    break;
    case ODBC_ERROR_OUT_OF_MEM:
    printf("ODBC_ERROR_OUT_OF_MEM");
    break;
    }
    }
      

  3.   

    一个手工注册access的odbc数据源例子:
    if(SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",
    "DSN=Qyycrz\0DBQ=ycrz.mdb\0")==1)
    TRACE("成功配置数据源!\n");
    else
    AfxMessageBox("配置数据源失败!");
      

  4.   

    if(SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN, "MS Access",dsn))
    --------------------参数填的不对