Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.065 c
15-1178804267
Desdechado
2007-05-10 17:37
2007.06.10
Шаблоны документов и их наполнение из БД


15-1178907901
Dwed
2007-05-11 22:25
2007.06.10
Вывести массив чисел в Memo самым быстрым способом.


15-1179415426
Карелин Артем
2007-05-17 19:23
2007.06.10
Меня попросили обьяву разместить.


1-1176236761
Gringoire
2007-04-11 00:26
2007.06.10
Как через программу созданую в Delphi запустить другую программу?


3-1174627466
DelphiN!
2007-03-23 08:24
2007.06.10
Зависание программы при обращении к БД из отдельного потока





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский