powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выполнение sql запроса
4 сообщений из 4, страница 1 из 1
Выполнение sql запроса
    #34513985
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори если тема является копией, просто переношу обсуждение сюда, т.к. там заголовок не соответствует действительности.

Есть база данных, написана на фокс про. Таблица client. В ней поля: ind_num и p_ind_num типа float/ В программе в дилоговом окне есть едитбоксы dlgClientNew.m_fIndNum и dlgClientNew.m_fPIndNum с типом данных float. Для добавления данных в таблицу строю запрос: INSERT client(ind_num,p_ind_num) VALUE(%d,%s). При выполнении програмы выдается сообщение об ошибке:
---------------------------
Безымянный - RozOffice: RozOffice.exe - Ошибка приложения
---------------------------
Инструкция по адресу "0x1021674c" обратилась к памяти по адресу "0x4148260a". Память не может быть "read".


"ОК" -- завершение приложения
"Отмена" -- отладка приложения
---------------------------
ОК Отмена
---------------------------

После чего приложение завершает свою работу.
Вот код функции:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
	CString strQuery;
	CDatabase m_cd;
	m_cd.Open("BDODBC");
    if(m_cd.IsOpen()){
		if(m_pSet->CanAppend()== 0 ){
			MessageBox("Çàïèñü äîáàâèòü íåëüçÿ, îáðàòèòåñü ê àäìèíèñòðàòîðó",
				"Îøèáêà îòêðûòèÿ áàçû äàííûõ",
				MB_OK | MB_ICONERROR);}
		else{
			CDlgClientNew dlgClientNew;
			if(dlgClientNew.DoModal() == IDOK){
				strQuery.Format("INSERT client(ind_num,p_ind_num) VALUE(%d,%s)", 
					dlgClientNew.m_fIndNum, 
					dlgClientNew.m_fPIndNum);
				try{ 
					m_cd.ExecuteSQL(strQuery);
				}
				catch(CDBException e){
					AfxMessageBox(e.m_nRetCode);
	}}}}
	else{
		AfxMessageBox("Îøèáêà îòêðûòèÿ áàçû äàííûõ, îáðàòèòåñü ê àäìèíèñòðàòîðó", 
			MB_OK | MB_ICONERROR);}
	m_pSet->Requery();
	UpdateData(FALSE);
Помагите пожалуйста бедному студенту.
...
Рейтинг: 0 / 0
Выполнение sql запроса
    #34514864
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jevgeniy
Код: plaintext
1.
2.
3.
		strQuery.Format("INSERT client(ind_num,p_ind_num) VALUE(%d,%s)", 
					dlgClientNew.m_fIndNum, 
					dlgClientNew.m_fPIndNum);
			
Помагите пожалуйста бедному студенту.

неверно ето для флоат. должно быть %f, %f - не %d, %s

man sprintf !!!
...
Рейтинг: 0 / 0
Выполнение sql запроса
    #34516224
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема поменялась, просто в запросе нужно писать VALUES

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CString strQuery;
CDatabase m_cd;
m_cd.Open("BDODBC");
   if(m_cd.IsOpen()){
    if(m_pSet->CanAppend()== 0 ){
        MessageBox("Çàïèñü äîáàâèòü íåëüçÿ, îáðàòèòåñü ê àäìèíèñòðàòîðó",
            "Îøèáêà îòêðûòèÿ áàçû äàííûõ",
            MB_OK | MB_ICONERROR);}
    else{
        CDlgClientNew dlgClientNew;
        if(dlgClientNew.DoModal() == IDOK){
            strQuery.Format("INSERT client(ind_num,p_ind_num) VALUES(%d,%s)", 
                dlgClientNew.m_fIndNum, 
                dlgClientNew.m_fPIndNum);
            try{ 
                m_cd.ExecuteSQL(strQuery);
            }
            catch(CDBException e){
                AfxMessageBox(e.m_nRetCode);
}}}}
else{
    AfxMessageBox("Îøèáêà îòêðûòèÿ áàçû äàííûõ, îáðàòèòåñü ê àäìèíèñòðàòîðó", 
        MB_OK | MB_ICONERROR);}
m_pSet->Requery();
UpdateData(FALSE);

И ошибка:

---------------------------
RozOffice
---------------------------
Couldn't find file 'DSN=BDODBC'.
---------------------------
ОК
---------------------------

В "Источники данных (ODBC)" Пользовательский DSN стоит BDODBC, Файловый DSN- BDODBC, Системный DSN- BDODBC. Везде пропиан путь к базе.

В коде менял подключение таким образом:
Код: plaintext
1.
CDatabase m_cd;
m_cd.Open("Visual FoxPro Database");

В итоге при вызове диалогового окна сначала просит указать путь к базе и потом после нажатия на ОК опять ошибка.

Пробовал такой вариант (встречал в литературе):
Код: plaintext
1.
CDatabase m_cd;
m_cd.Open("DSN=BDODBC");

Получаю ошибку при вызове диалогового окна:
---------------------------
RozOffice
---------------------------
Источник данных не найден и не указан драйвер, используемый по умолчанию

---------------------------
ОК
---------------------------

Нашел в системе файл BDODBC.dsn (понесло меня), думал может скопировать его в директорию с программой - не помогло.

Чем может объясняться даное поведение - хз
...
Рейтинг: 0 / 0
Выполнение sql запроса
    #34516314
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A. Fig Lee Jevgeniy
Код: plaintext
1.
2.
3.
		strQuery.Format("INSERT client(ind_num,p_ind_num) VALUE(%d,%s)", 
					dlgClientNew.m_fIndNum, 
					dlgClientNew.m_fPIndNum);
			
Помагите пожалуйста бедному студенту.

неверно ето для флоат. должно быть %f, %f - не %d, %s

man sprintf !!!
Ставил так - но результата нет, пробовал такой код (ниже), но резкльтата опятьже нету

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
	CString strQuery;
	CDatabase m_cd;
	CRecordset cr(&m_cd);
	m_cd.Open("BDODBC");
    if(m_cd.IsOpen()){
		if(m_pSet->CanAppend()== 0 ){
			MessageBox("Çàïèñü äîáàâèòü íåëüçÿ, îáðàòèòåñü ê àäìèíèñòðàòîðó",
				"Îøèáêà îòêðûòèÿ áàçû äàííûõ",
				MB_OK | MB_ICONERROR);}
		else{
			CDlgClientNew dlgClientNew;
			if(dlgClientNew.DoModal() == IDOK){
				strQuery.Format("INSERT client(ind_num,p_ind_num) VALUES(%f,%f)", 
					dlgClientNew.m_fIndNum, 
					dlgClientNew.m_fPIndNum);
				try{ 
					//m_cd.ExecuteSQL(strQuery);
					cr.Open(CRecordset::snapshot, strQuery);
					cr.Close();
				}
				catch(CDBException e){
					AfxMessageBox(e.m_nRetCode);
	}}}}
	else{
		AfxMessageBox("Îøèáêà îòêðûòèÿ áàçû äàííûõ, îáðàòèòåñü ê àäìèíèñòðàòîðó", 
			MB_OK | MB_ICONERROR);}
	m_pSet->Requery();
	UpdateData(FALSE);
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выполнение sql запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]