Создание Системного Dsn

Тема в разделе "MS Visual C++", создана пользователем Irisha, 25 ноя 2011.

  1. Irisha

    Irisha Гость

    Помогите разобраться. Пытаюсь программно создать системный источник данных.
    При компиляции вижу:

    .\LiskovaServerDlg.cpp(277) : error C2065: ODBC_ADD_SYS_DSN: необъявленный идентификатор
    .\LiskovaServerDlg.cpp(277) : error C3861: SQLConfigDataSource: идентификатор не найден

    подключенные библиотеки:
    Код (C++):
    #include "windows.h"
    #include "odbcinst.h"
    #include "stdafx.h"
    #include "sql.h"
    в коде пишу:

    Код (C++):
    SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,
    "SQL Server",
    "DSN=OOP\0"
    "Description=OOP\0"
    "Servername=(local)\SQLEXPRESS\0"
    "Database=D:\база\Trade.mdf"
    )
    может не хватает каких-то библиотек?
    что еще требуется, чтобы запуститься?
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Может и библиотек не хватает... Может не хватает odbccp32.lib ?.... А может и еще чего.. Например заголовочного файла!?

    Добавлено: Ан нет... заголовочный файл тута...
     
  3. Irisha

    Irisha Гость

    в проект добавлены и odbc32.lib и odbccp32.lib.
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    А файл odbcinst.h вообще существует?
     
  5. Irisha

    Irisha Гость

    существует
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    А в файле LiskovaServerDlg.cpp подключен заголовочный файл #include <odbcinst.h> ?
    Если да и не работает - тогда показывай код, иначе я тебе не верю.
     
  7. Irisha

    Irisha Гость

    Код (C++):
    #include "windows.h"
    #include "odbcinst.h"
    #include "stdafx.h"
    #include "LiskovaServer.h"
    #include "LiskovaServerDlg.h"
    #include "MyCrec.h"
    #include "sql.h"


    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif

    // диалоговое окно CLiskovaServerDlg

    CLiskovaServerDlg::CLiskovaServerDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CLiskovaServerDlg::IDD, pParent)
    {
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

    void CLiskovaServerDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //DDX_Control(pDX,STOPBUTTON,_stop);
    }

    BEGIN_MESSAGE_MAP(CLiskovaServerDlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    ON_BN_CLICKED(STARTBUTTON, &CLiskovaServerDlg::OnStartbutton)
    ON_UPDATE_COMMAND_UI(STOPBUTTON, Act_Stop)
    ON_UPDATE_COMMAND_UI(STARTBUTTON, Deact_Start)
    ON_UPDATE_COMMAND_UI(SAVEBUTTON, Act_Save)
    ON_BN_CLICKED(STOPBUTTON, &CLiskovaServerDlg::OnStopbutton)
    END_MESSAGE_MAP()


    // обработчики сообщений CLiskovaServerDlg

    BOOL CLiskovaServerDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // Добавление пункта ''О программе...'' в системное меню.

    // IDM_ABOUTBOX должен быть в пределах системной команды.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    }

    // Задает значок для этого диалогового окна. Среда делает это автоматически,
    // если главное окно приложения не является диалоговым
    SetIcon(m_hIcon, TRUE);         // Крупный значок
    SetIcon(m_hIcon, FALSE);        // Мелкий значок

    // TODO: добавьте дополнительную инициализацию
    Set_Bool(FALSE);

    return TRUE; // возврат значения TRUE, если фокус не передан элементу управления
    }

    void CLiskovaServerDlg::Deact_Start(CCmdUI *pCmdUI)
    {  
    if (Get_Bool()==TRUE)
    pCmdUI->Enable(FALSE);
    else
    pCmdUI->Enable(TRUE);
    }
    void CLiskovaServerDlg::Act_Stop(CCmdUI *pCmdUI)
    {
    if (Get_Bool()==TRUE)
    pCmdUI->Enable(TRUE);
    else
    pCmdUI->Enable(FALSE);

    }
    void CLiskovaServerDlg::Act_Save(CCmdUI *pCmdUI)
    {
    if (Get_Bool()==TRUE)
    pCmdUI->Enable(TRUE);
    else
    pCmdUI->Enable(FALSE);
    }

    void CLiskovaServerDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    }

    void CLiskovaServerDlg::OnPaint()
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // контекст устройства для рисования

    SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

    // Выравнивание значка по центру клиентского прямоугольника
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // Нарисуйте значок
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    }

    // Система вызывает эту функцию для получения отображения курсора при перемещении
    // свернутого окна.
    HCURSOR CLiskovaServerDlg::OnQueryDragIcon()
    {
    return static_cast<HCURSOR>(m_hIcon);
    }


    void CLiskovaServerDlg::OnStartbutton()
    {
    Set_Bool(TRUE);

    SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,
    "SQL Server",
    "DSN=OOP\0"
    "Description=OOP\0"
    "Servername=(local)\SQLEXPRESS\0"
    "Database=D:\база\Trade.mdf");
    UpdateDialogControls(this, TRUE);
    }

    void CLiskovaServerDlg::OnStopbutton()
    {
    Set_Bool(FALSE);
    UpdateDialogControls(this, TRUE);
    }
    Пропущен фрагмент кода.. (реализация "О программе", созданная визардом)
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Странно, но у меня компилируется без проблем.
     
  9. Irisha

    Irisha Гость

    спасибо за помощь!! Буду отчаиваться(((
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Попробуй подключи заголовок так:
    Код (C++):
    #include <odbcinst.h>
    , т.е. используя не ковычки, а скобки. Не факт что поможет, но так будет правильней.
     
  11. Irisha

    Irisha Гость

    спасибо попробую...
     
Загрузка...

Поделиться этой страницей