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

Есть файл базы данных (*.dbf) нужно всю информацию из него вывести в гриде. Можно канечно использовать ADO, но тогда стает вопрос как вывести не всю информацию, а, допустим, результат выборки. Подскажите пожалуйста на простом примере как правильно строить запросы и какие функции использовать чтоб можно было вывести информацию в грид с использованием sql запроса и элемента управления формы editbox'a (m_edit).

Всем заранее спасибо, с уважением Евгений.
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502030
Фотография FasterHarder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
I started in 1983, in 2007 i still on a case!

ADO принципиально( с его recordset - ом, так вроде б называется ) или как вариант подойдет ADO.NET ?
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502329
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JevgeniyУв. форумчане.
Пишу программку на VC++ 6.0 Очень прошу не игнорировать столь, возможно, простые вопросы.

Есть файл базы данных (*.dbf) нужно всю информацию из него вывести в гриде. Можно канечно использовать ADO, но тогда стает вопрос как вывести не всю информацию, а, допустим, результат выборки. Подскажите пожалуйста на простом примере как правильно строить запросы и какие функции использовать чтоб можно было вывести информацию в грид с использованием sql запроса и элемента управления формы editbox'a (m_edit).

Всем заранее спасибо, с уважением Евгений.
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502330
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, а можно примерчик как можно реализовать?

Сделал такую заготовку, и не работает :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try
{
	cw=new CDaoWorkspace(); 
	cd = new CDaoDatabase(cw);
	cd->Open(csBaseName);
	cd->Execute("INSERT client(id, surname) VALUE(id, 'Иванов')",dbFailOnError);
	cd->Close(); 
	cw->Close();
	delete cd;
	delete cw;
}
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502334
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JevgeniyУв. форумчане.
Пишу программку на VC++ 6.0 Очень прошу не игнорировать столь, возможно, простые вопросы.

Есть файл базы данных (*.dbf) нужно всю информацию из него вывести в гриде. Можно канечно использовать ADO, но тогда стает вопрос как вывести не всю информацию, а, допустим, результат выборки. Подскажите пожалуйста на простом примере как правильно строить запросы и какие функции использовать чтоб можно было вывести информацию в грид с использованием sql запроса и элемента управления формы editbox'a (m_edit).

Всем заранее спасибо, с уважением Евгений.

моя логика:
В любом случае Вы пишите некий запрос на выборку данных
Вида - select id, name from SuperTale
Хотите не все данные из таблица - измените запрос
select id, name from SuperTale where id=2

Касаемо Jevgeniy...и элемента управления формы editbox'a (m_edit)
Думается Ваш поиск неверен. Следует почитать в область CListCtrl, CListView
У меня даже фантазии не хватате КАК представить данные из таблицы в EditBox-е
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502351
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JevgeniyХорошо, а можно примерчик как можно реализовать?

Сделал такую заготовку, и не работает :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try
{
	cw=new CDaoWorkspace(); 
	cd = new CDaoDatabase(cw);
	cd->Open(csBaseName);
	cd->Execute("INSERT client(id, surname) VALUE(id, 'Иванов')",dbFailOnError);
	cd->Close(); 
	cw->Close();
	delete cd;
	delete cw;
}


А так
INSERT client(id, surname) VALUE(5, \'Иванов\')
для случая id - это Number
и кто-то отменил \'?
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502365
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет вы не совсем меня поняли. Я имел ввиду взять использовать данные из эдит бокса для построения запроса. В фокс про, например, достаточно было написать:

...
where id=thisform.textbox.value
...

Т.е. editbox для выборки в запросе по параметрам введнным пользователем.
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502392
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JevgeniyНет вы не совсем меня поняли. Я имел ввиду взять использовать данные из эдит бокса для построения запроса. В фокс про, например, достаточно было написать:

...
where id=thisform.textbox.value
...

Т.е. editbox для выборки в запросе по параметрам введнным пользователем.

int m_ID;
CString m_NAME
... //Помещение в m_ID значения из Вашего Edit-а при помощи стандартных средств
CString strSQL;
strSQL.Format("INSERT client(id,surname) VALUE(%d,%s)",m_ID,m_NAME);
...
cd->Execute(strSQL,dbFailOnError);
...

Хотя ЭТОТ пример не красив, рекомендую почитать в сторону параметризируемых запросов. Не все СУБД их поддерживают. Если у Вас DBF думаю представленный подход единственно возможный.
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502705
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                                 CString strSQL;
                                 ...
			m_pSet->MoveLast();
			CDatabase cd;
			strSQL.Format("INSERT client(id,ind_num,surname) VALUE(%d,%s,%v)",dlgClientNew.m_iId,dlgClientNew.m_iIndNum,dlgClientNew.m_strSurname);
			try{
				cd.Execute(strSQL);
			}
			catch(CDBException e){
				AfxMessageBox(e.m_strError);
			}

Почитал в литературе (хз, но чето инфы по этому моменту хрен де сыщешь :() и вот что у меня получилось. Подскажите пожалуйста по поводу объекта cd , объектом какого класса он далжен быть? Перепробовал CDatabase, CRecordset - не работает. Ошибка: error C2039: 'Execute' : is not a member of 'CDatabase'. И так со всеми классами.
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502829
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори за плохое оформление кода в предыдущем посте.


И 2-й вопрос, а как можно вывести результат запроса в грид?
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34502977
DDD_DDD_DDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишу программу для выполнения скрипта
SET TERM ^ ;
CREATE OR ALTER PROCEDURE TARIFFPARCELINT
...
end^
SET TERM ; ^
выдаёт ошибку Token not found
Token: TERM
Line number 1
пишу на С++ buildere
писал проги под выполнение скриптов не содержащих TERM всё прекрасно работало
З.Ы. извеняюсь что не в тему...
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34503148
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jevgeniy
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                                 CString strSQL;
                                 ...
			m_pSet->MoveLast();
			CDatabase cd;
			strSQL.Format("INSERT client(id,ind_num,surname) VALUE(%d,%s,%v)",dlgClientNew.m_iId,dlgClientNew.m_iIndNum,dlgClientNew.m_strSurname);
			try{
				cd.Execute(strSQL);
			}
			catch(CDBException e){
				AfxMessageBox(e.m_strError);
			}

Почитал в литературе (хз, но чето инфы по этому моменту хрен де сыщешь :() и вот что у меня получилось. Подскажите пожалуйста по поводу объекта cd , объектом какого класса он далжен быть? Перепробовал CDatabase, CRecordset - не работает. Ошибка: error C2039: 'Execute' : is not a member of 'CDatabase'. И так со всеми классами.

MSDN стоит?
Если да - рекомендую выделить слово CDatabase и нажать F1

Вот, что у меня получилось:
CDatabase::ExecuteSQLSee Also
CDatabase Overview | Class Members | Hierarchy Chart | CDatabase::SetLoginTimeout | CRecordset
Call this member function when you need to execute a SQL command directly.

void ExecuteSQL(
LPCTSTR lpszSQL
);
Parameters
lpszSQL
Pointer to a null-terminated string containing a valid SQL command to execute. You can pass a CString.
Remarks
Create the command as a null-terminated string. ExecuteSQL does not return data records. If you want to operate on records, use a recordset object instead.

Most of your commands for a data source are issued through recordset objects, which support commands for selecting data, inserting new records, deleting records, and editing records. However, not all ODBC functionality is directly supported by the database classes, so you may at times need to make a direct SQL call with ExecuteSQL.

Example
CString strCmd = "UPDATE Taxes SET Federal = 36%";

TRY
{
m_dbCust.ExecuteSQL( strCmd );
}

CATCH(CDBException, e)
{
// The error code is in e->m_nRetCode
}

END_CATCH

Нету у CDatabase метода Execute есть ExecuteSQL
Собственно об этом и писали ошибки...
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34503166
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... а ежели нет MSDN, как и возможности его поставить то лучший выход - найти " .h"-файл в котором описан класс CDatabase и Там глянуть Какие у него методы.

Выделить слово "CDatabase "
Прав. кл. - контекстное меню - "Go to Declaration"

p.s. не помню в 6-ке уже было или нет
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34506346
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо vanoman что наставил на пусть истинный.

Вот у меня функция добавления новой записи в таблицу. Открываю окно ввожу данные.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CString strCmd;
CDlgClientNew dlgClientNew;
if(dlgClientNew.DoModal() == IDOK){
	CDatabase cd;
	strCmd.Format("INSERT client(id,ind_num,surname)  
    VALUE(%c,%d,%v)",dlgClientNew.m_iId,dlgClientNew.m_iIndNum,dlgClientNew.m_strSurname);
	try{
		cd.ExecuteSQL(strCmd);
	}
	catch(CDBException e){
		AfxMessageBox(e.m_strError);
	}
}

и в итоге мне выдается следующая ошибка:

---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: E:\BD\RozOffice\Debug\RozOffice.exe
File: strex.cpp
Line: 681

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
Прервать Повтор Пропустить
---------------------------

Естественно записи в таблицу не добавляются.
Подскажите пожалуйста в чем моя ошибка?

С уважением Евгений.
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34506744
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите плз как результат запроса, который находится в курсоре вывести в грид?
...
Рейтинг: 0 / 0
Отображение результата запроса в грид
    #34506929
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот моя функция полностью, подскажите плиз где я не прав?

void CProjView::OnRecordNew()
{
if(m_pSet->CanAppend()==0)
MessageBox("Çàïèñè äîáàâëÿòü íåëüçÿ",
"Îøèáêà îòêðûòèÿ áàçû äàííûõ",
MB_OK | MB_ICONERROR);
else{
CString strCmd;
CDlgClientNew dlgClientNew;
if(dlgClientNew.DoModal() == IDOK){
CDatabase cd;
strCmd.Format("INSERT client(id,ind_num,surname) VALUE(%c,%d,%v)",dlgClientNew.m_iId,dlgClientNew.m_iIndNum,dlgClientNew.m_strSurname);
try{
cd.ExecuteSQL(strCmd);
}
catch(CDBException e){
AfxMessageBox(e.m_strError);
}
}
}
}
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отображение результата запроса в грид
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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