![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DbiQExecDirect из BDE API (IDAPI) не выполняет SQL-запрос [D7, Paradox]
Dmitry_177 © (2007-03-21 16:45:00)DbiQExecDirect из BDE API (IDAPI) не выполняет SQL-запрос.. Запрос правильно построен, т.е. не в этом дело.. Строка сама очень длинная, а в DbiQExecDirect передается PChar-строка, а там на сколько я знаю 255 символов максимум, получается что не полностью вся строка передается в функцию и из за этого она не выполняет его.. Подскажите пожалуйста как с этим бороться?
Dmitry_177 (2007-03-22 13:32:00) [1]
var
szQuery: string;
hCursor: hDBICur;
iRecCount: Integer;
pRecBuf: PBYTE;
Props: CURProps;
...
szQuery := 'SELECT Name FROM Table.DB';
if DbiQExecDirect(hDB, qrylangSQL, PChar(szQuery), @hCursor) = DBIERR_NONE then
begin
DbiGetExactRecordCount(hCursor, iRecCount);
DbiGetCursorProps(hCursor, Props);
GetMem(pRecBuf, Props.iRecBufSize * SizeOf(BYTE));
DbiReadBlock(hCursor, iRecCount, pRecBuf);
end;
Вот так? Теперь в pRecBuf хранится указатель на данные я как понимаю, но как их от туда считать???
sniknik (2007-03-22 13:11:00) [2]> но как их считывать то???
пример по тому что там
-> clickmaker © (22.03.07 09:31) [5]
а еще в хелпе каждой функции есть внизу ссылки на связанные/родственные...
Dmitry_177 (2007-03-22 12:42:00) [3]В примерах функцией DbiGetRecordCount мы узнаем количество записей.. но как их считывать то???
sniknik (2007-03-22 10:42:00) [4]> а где он там?
по кнопке "Delphi Examples" у практически каждой функции.
Johnmen (2007-03-22 10:42:00) [5]Курсор сначала надо создать, а уже потом вызывать ф-ию.
По исходникам вполне можно разобраться, как это делает Борланд.
Dmitry_177 (2007-03-22 10:39:00) [6]sniknik, а пример я не видел.. а где он там?
Dmitry_177 (2007-03-22 10:37:00) [7]ЮЮ, ага, маленький :)
Подскажите пожалуйста как считать данные из курсора..
Этим: DbiGetExactRecordCount(hCur, iRecCount);я как понимаю мы узнаем количество записей в курсоре? Т.е. по тому SQL-запросу, который я чуть выше привел будет количество имен? а вот как их считывать?
sniknik (2007-03-22 10:35:00) [8]ну а зачем тогда за API взялся? если по примеру из хелпа, по готовому, разобраться не можеш. пиши на стандартных компонентах где все API скрыто.
слишком сложное для себя задание взял...
ЮЮ (2007-03-22 10:34:00) [9]см. unit DBTables;
function TDatabase.Execute(const SQL: string; Params: TParams = nil;
Cache: Boolean = False; Cursor: phDBICur = nil): Integer;
ЮЮ (2007-03-22 10:30:00) [10]Пишем маленький exe что ли? :) Почему API, а не BDE-компоненты?
Dmitry_177 (2007-03-22 10:24:00) [11]clickmaker, смотрел.. описания функций видел, а вот как считывать данные с указателя так и не пойму..((
clickmaker (2007-03-22 09:31:00) [12]DbiReadBlock etc
см. Program Files\Common Files\Borland Shared\BDE\BDE32.HLP
Dmitry_177 (2007-03-21 21:13:00) [13]разобрался я.. если например добавлять строку, изменять или удалять то ничего считывать по сути ненадо.. а вот если я сделаю запрос SELECT-ом?
szQuery := 'SELECT Names FROM Table.DB';
DbiQExecDirect(hDB, qrylangSQL, PChar(szQuery), @hCur);
в переменной hCurбудет курсор на данные, но вот как их считывать от туда? Подскажите пожалуйста..
sniknik (2007-03-21 20:36:00) [14]> Ну вот. Опять "код давай".
уверяю тебя, ему не для сдачи в школе... ;)
а очень даже наоборот, и если вдруг даст, то у самого спрашивающего появиться шанс сдать задание в школе... есть же разница.
Mike Kouzmine (2007-03-21 20:23:00) [15]Johnmen © (21.03.07 17:18) [1]
Да, и код давай :)
<Цитата>
Ну вот. Опять "код давай".
Johnmen (2007-03-21 17:18:00) [16]Сделай короткую строку и проверь.
Про pchar читай хелп, а не приводи свои измышления....
Да, и код давай :)