Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Чтение генератора из InterBase [D6, WinXP]


Hadroran ©   (2005-02-22 10:20:00) 

Уважаемые знатоки.
Как прочесть из базы данных InterBase значение генератора. У меня получается только прибавлять. Может кто поможет кодом.


Hadroran   (2005-02-22 12:45:00) [1]

Ну ведь это только пример :) А так спасибо. Получается то, что хотелось.


Digitman   (2005-02-22 12:41:00) [2]


> Hadroran   (22.02.05 12:15) [9]


Johnmen, вероятно, имелл в виду, что твоя затея с чтением тек.значения генератора бестолковая ... разве что только поглазеть на прочитанное значение ... ибо через мгновение оно может и вправе измениться на сервере, еще даже ДО того момента как ты улицезреешь его в переменной gen_value


Hadroran   (2005-02-22 12:15:00) [3]

Почему!? Все правильно присваивается.


Johnmen   (2005-02-22 12:10:00) [4]

>Hadroran   (22.02.05 12:06) [7]

Здесь всё абсолютно неверно.


Hadroran   (2005-02-22 12:06:00) [5]

Помогло только так:

var
gen_value:integer;
...
 IBSQL.SQL.Add('select GEN_ID(GEN_NUM_NAKLAD, 0) from rdb$database');
 IBSQL.ExecQuery;
 gen_value := IBSQL.Fields[0].AsInteger;
 ShowMessage(inttostr(gen_value));
 IBSQL.Close;
...


Digitman   (2005-02-22 11:32:00) [6]

что-то я не вижу никакого повода для ошибки конвертации ..

и св-во TField.Value и переменная gen_value - обе вариантного типа, происходит прямое присвоение безо всяких конвертаций ..

а какой класс объекта-исключения ?


Hadroran   (2005-02-22 11:12:00) [7]

gen_value := IBSQL.Fields[0].Value;

var
gen_value:Variant;

Выдает ошибку при присваивании 'Invalid data conversion'


Digitman   (2005-02-22 11:01:00) [8]


> 1. Бросаю на форму компонент IBSQL;


.. и назначаешь кроме этого его св-ва Database , Transaction


> 2. IBSQL.SQL.Append(select GEN_ID(<имя генератора>, 0) from
> <путь к базе>);


IBSQL.SQL.Add('select GEN_ID(<имя генератора>, 0) from
rdb$database');

! никакой не "<путь к базе>", а именно rdb$database!

rdb$database - это обязательно присутствующая в любой IB-базе сист.таблица , содержащая единственную запись (в дан.случае неважно что она содержит)


> А тогда кому его присвоить?


IBSQL.ExecQuery;
gen_value := IBSQL.Fields[0].Value;
IBSQL.Close;


Johnmen   (2005-02-22 10:57:00) [9]

http://www.ibase.ru/devinfo/generator.htm


Hadroran   (2005-02-22 10:46:00) [10]

Я правильно понял, что нужно сделать так:
1. Бросаю на форму компонент IBSQL;
2. IBSQL.SQL.Append(select GEN_ID(<имя генератора>, 0) from <путь к базе>);
3. IBSQL.ExecQuery;

Так? А тогда кому его присвоить?


Digitman   (2005-02-22 10:32:00) [11]

select GEN_ID(my_generator, 0) from rdb$database


Наверх

Титульная страница Поиск, карта сайта Написать письмо