Форум: "Базы";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизDbiQExecDirect из BDE API (IDAPI) не выполняет SQL-запрос Найти похожие ветки
← →
Dmitry_177 (2007-03-21 16:45) [0]DbiQExecDirect из BDE API (IDAPI) не выполняет SQL-запрос.. Запрос правильно построен, т.е. не в этом дело.. Строка сама очень длинная, а в DbiQExecDirect передается PChar-строка, а там на сколько я знаю 255 символов максимум, получается что не полностью вся строка передается в функцию и из за этого она не выполняет его.. Подскажите пожалуйста как с этим бороться?
← →
Johnmen © (2007-03-21 17:18) [1]Сделай короткую строку и проверь.
Про pchar читай хелп, а не приводи свои измышления....
Да, и код давай :)
← →
Mike Kouzmine © (2007-03-21 20:23) [2]Johnmen © (21.03.07 17:18) [1]
Да, и код давай :)
<Цитата>
Ну вот. Опять "код давай".
← →
sniknik © (2007-03-21 20:36) [3]> Ну вот. Опять "код давай".
уверяю тебя, ему не для сдачи в школе... ;)
а очень даже наоборот, и если вдруг даст, то у самого спрашивающего появиться шанс сдать задание в школе... есть же разница.
← →
Dmitry_177 (2007-03-21 21:13) [4]разобрался я.. если например добавлять строку, изменять или удалять то ничего считывать по сути ненадо.. а вот если я сделаю запрос SELECT-ом?
szQuery := "SELECT Names FROM Table.DB";
DbiQExecDirect(hDB, qrylangSQL, PChar(szQuery), @hCur);
в переменной hCur будет курсор на данные, но вот как их считывать от туда? Подскажите пожалуйста..
← →
clickmaker © (2007-03-22 09:31) [5]DbiReadBlock etc
см. Program Files\Common Files\Borland Shared\BDE\BDE32.HLP
← →
Dmitry_177 (2007-03-22 10:24) [6]clickmaker, смотрел.. описания функций видел, а вот как считывать данные с указателя так и не пойму..((
← →
ЮЮ © (2007-03-22 10:30) [7]Пишем маленький exe что ли? :) Почему API, а не BDE-компоненты?
← →
ЮЮ © (2007-03-22 10:34) [8]см. unit DBTables;
function TDatabase.Execute(const SQL: string; Params: TParams = nil;
Cache: Boolean = False; Cursor: phDBICur = nil): Integer;
← →
sniknik © (2007-03-22 10:35) [9]ну а зачем тогда за API взялся? если по примеру из хелпа, по готовому, разобраться не можеш. пиши на стандартных компонентах где все API скрыто.
слишком сложное для себя задание взял...
← →
Dmitry_177 (2007-03-22 10:37) [10]ЮЮ, ага, маленький :)
Подскажите пожалуйста как считать данные из курсора..
Этим: DbiGetExactRecordCount(hCur, iRecCount); я как понимаю мы узнаем количество записей в курсоре? Т.е. по тому SQL-запросу, который я чуть выше привел будет количество имен? а вот как их считывать?
← →
Dmitry_177 (2007-03-22 10:39) [11]sniknik, а пример я не видел.. а где он там?
← →
sniknik © (2007-03-22 10:42) [12]> а где он там?
по кнопке "Delphi Examples" у практически каждой функции.
← →
Johnmen © (2007-03-22 10:42) [13]Курсор сначала надо создать, а уже потом вызывать ф-ию.
По исходникам вполне можно разобраться, как это делает Борланд.
← →
Dmitry_177 (2007-03-22 12:42) [14]В примерах функцией DbiGetRecordCount мы узнаем количество записей.. но как их считывать то???
← →
sniknik © (2007-03-22 13:11) [15]> но как их считывать то???
пример по тому что там
-> clickmaker © (22.03.07 09:31) [5]
а еще в хелпе каждой функции есть внизу ссылки на связанные/родственные...
← →
Dmitry_177 (2007-03-22 13:32) [16]
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 хранится указатель на данные я как понимаю, но как их от туда считать???
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c