Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2010, 14:04   #1
Liones
Пользователь
 
Аватар для Liones
 
Регистрация: 26.11.2008
Сообщений: 81
По умолчанию Генератор Firebird

есть генератор
Код:
CREATE GENERATOR NEW_SPRAVKI;

SET GENERATOR NEW_SPRAVKI TO 1;
нужно чтоб если в базе нет ни одной записи, генератор "плясал" не от 1, а от произвольного числа. А если есть хотя бы одна запись, то увеличивал на 1
в коде пыталась так писать
Код:
if DM.IBDSSprav.RecordCount<>0 then
  begin
  DM.IBSQL1.SQL.Clear;
  DM.IBSQL1.SQL.Add('SET GENERATOR NEW_SPRAVKI TO 1;');
  DM.IBSQL1.ExecQuery;
  end else begin
  DM.IBSQL1.SQL.Clear;
  DM.IBSQL1.SQL.Add('SET GENERATOR NEW_SPRAVKI TO '+IntToStr(nom)+';');
  DM.IBSQL1.ExecQuery;
  end;
и вот так
Код:
if DM.IBDSSprav.RecordCount=0 then
  begin
  DM.IBDSSprav.GeneratorField.IncrementBy:=nom;
  IBDSSprav.GeneratorField.Apply;
  end else begin
  DM.IBDSSprav.GeneratorField.IncrementBy:=1;
  IBDSSprav.GeneratorField.Apply;
  end;
ничего не получается, что не правильно, подскажите
Liones вне форума Ответить с цитированием
Старый 02.08.2010, 14:46   #2
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
Сообщение

1)
Подсчёт количества записей в таблице, удовлетворяющих определённому
условию
Код:
SELECT COUNT(*) FROM <ТАБЛИЦА> WHERE <УСЛОВИЕ>
2)
Цитата:
нужно чтоб если в базе нет ни одной записи, генератор "плясал" не от 1, а от произвольного числа. А если есть хотя бы одна запись, то увеличивал на 1 в коде пыталась так писать
Если не ошибаюсь надо писать хранимую процедуру, которая при таком-то
условии будет вызывать генератор.
Темы для WordPress. Русские WordPress шаблоны
Alexei91 вне форума Ответить с цитированием
Старый 02.08.2010, 15:22   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

Блин, соскучилась по Firebird, вот примерный код процедуры, могу чуть напутать с синтаксисом, но примерно так
Код:
 
set term^;
create procedure generate(start int)
as
declare variable count_zap int
begin
select count(id_field) from my_table into :count_zap;
if (:count_zap=0) then SET GENERATOR NEW_SPRAVKI TO :start;
else gen_id(NEW_SPRAVKI,1);
end^
set term;^
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 03.08.2010, 09:26   #4
Liones
Пользователь
 
Аватар для Liones
 
Регистрация: 26.11.2008
Сообщений: 81
По умолчанию

Цитата:
Сообщение от Sparky Посмотреть сообщение
Блин, соскучилась по Firebird, вот примерный код процедуры, могу чуть напутать с синтаксисом, но примерно так
Код:
 
set term^;
create procedure generate(start int)
as
declare variable count_zap int
begin
select count(id_field) from my_table into :count_zap;
if (:count_zap=0) then SET GENERATOR NEW_SPRAVKI TO :start;
else gen_id(NEW_SPRAVKI,1);
end^
set term;^
что-то не так, ругается на SET GENERATOR...
Liones вне форума Ответить с цитированием
Старый 03.08.2010, 13:22   #5
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

ну я же сказала что могут быть ошибки, почитайте документацию
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор Treshmazai Помощь студентам 0 08.05.2010 13:26
Генератор Графа Alex_sim Общие вопросы C/C++ 2 06.04.2010 16:48
Генератор водорода С.М.С Свободное общение 11 05.05.2009 15:22
Генератор?? Нестер Софт 5 10.07.2008 13:32
Генератор warlok Общие вопросы Delphi 3 30.05.2008 00:53