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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2011, 18:24   #1
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
Вопрос Пара простых вопросов по Delphi + БД

Здравствуйте!

Возникла пара вопросов по Delphi + Firebird:

1. Многие функции в программе связанные с БД, например выборки или установка значений (через FIBDataset или FIBQuery) итд срабатывают со второго раза, то есть заходим в программу - первый раз не срабатывает, со второго раза и далее работает нормально. Очевидно какой-то компонент связи с БД (DB? Dataset? Datasource?) неактивен, после первой команды просыпается, и вторую команду уже обрабатывает нормально. Пока только начинаю разбираться с БД - прошу подсказать как решить данную проблему? в каком компоненте искать и какой параметр? может написать что-то при включении программы вида all.datasets.prepare ?

2. Есть форма, в ней невизуальный объект FIBDataset с уже настроенными командами SQL. В конце ввода данных в форме происходит - Dataset.Post, но в случае ввода новых данных оптимально Insert, а в случае исправления данных в форме оптимально Update... пробую писать очевидную вещь: Dataset.Insert и Dataset.Update, но Delphi ругается на Dataset.Update - говорит такого не знает. Там есть разные варианты начинающиеся на Dataset.Upd.... подскажите какой из них оптимально использовать?

3. В БД процедура вида insert into ..... values (....., 'менеджер ' add coalesce(:name_a,:name_b,:name_c));
Так якобы неправильно, пробовал вместо "add" писать "+", но всё равно ошибка. Как правильно написать, чтобы отправлялось значение собранное из текста {'менеджер '} и {coalesce(:name_a,:name_b,:name_c)} ??

Последний раз редактировалось delphicoding; 02.08.2011 в 19:24.
delphicoding вне форума Ответить с цитированием
Старый 03.08.2011, 15:20   #2
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Вопросы 2-3 решены.

А вопрос 1 не решён. Вот опять вызов хранимой процедуры через FIBStoredProc срабатывает только со второго раза:

Код:
procedure TBaseForm.btEditClick(Sender: TObject);
begin
  inherited;
  With dm.spOfficesEdit do begin        // FIBStoredProc 
    Close;
    ParamByName('OFFICE_CONTACT_USERS_ID').Value := null;
    .............. ещё параметры
    ExecProc;
    close;
  end;
end;
Никаких других переходов и объектов нет - из программы при нажатии кнопки через FIBStoredProc вызывается хранимая процедура БД.

Поковырял настройки FIBPlus Каждой процедуре и датасету в FIB назначается DB, которой в свою очередь назначаются 2 так называемые FIBTransaction - Read и Write. При этом по-сути и параметрами они идентичны, кроме одного параметра "Active" - для Write он почему-то выключен... может в этом дело? Какие есть предположения почему мог быть установлен Write Active = False ??? Собственно изменение Write Active = True результата не дало - всё равно некоторые действия с БД работают только со второго раза!
delphicoding вне форума Ответить с цитированием
Старый 04.08.2011, 10:15   #3
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Покажи что у тебя в свойстве SQL понаписано компонента dm.spOfficesEdit
Gulik вне форума Ответить с цитированием
Старый 04.08.2011, 21:25   #4
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
Вопрос

Вот настройки см.вложение.

Столкнулся с совершенно банальной проблемой - нужно join несколько таблиц, всё понятно, но в одном месте непонятно - нужно два раза привязать к таблице A таблицу-справочник B по параметрам
on A.id1=B.id
on A.id2=B.id
чтобы в итоге для A.id1 и A.id1 получить B.name ввиде двух разных значений A.name1 и A.name2

Написать всё могу, но вот что писать в select и как объяснить SQL, что нужно два разных значения - не представляю и код всё время вызывает ошибку!

Подскажите кто разбирается!
Изображения
Тип файла: jpg sp_settings (2).jpg (202.8 Кб, 148 просмотров)
delphicoding вне форума Ответить с цитированием
Старый 04.08.2011, 21:55   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT A.*,B1.Name AS Name1,B2.Name AS Name2
  FROM Tablica A
    LEFT JOIN Spr B1 ON B1.id=A.Id1
    LEFT JOIN Spr B2 ON B2.id=A.Id2
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.08.2011, 09:02   #6
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Гы, как просто-то, спасибо! :D
delphicoding вне форума Ответить с цитированием
Старый 05.08.2011, 09:25   #7
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Цитата:
Сообщение от delphicoding Посмотреть сообщение
Гы, как просто-то, спасибо! :D
Остался не решён вопрос №1... может у кого есть соображения?
delphicoding вне форума Ответить с цитированием
Старый 05.08.2011, 09:38   #8
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Цитата:
Сообщение от delphicoding Посмотреть сообщение
Остался не решён вопрос №1... может у кого есть соображения?
Соображений на вопросах не построишь, выкладывай исходники
Gulik вне форума Ответить с цитированием
Старый 05.08.2011, 10:43   #9
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Это врядли возможно.
delphicoding вне форума Ответить с цитированием
Старый 05.08.2011, 13:36   #10
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Цитата:
Сообщение от delphicoding Посмотреть сообщение
Это врядли возможно.
Тоже самое и я могу сказать...
Ты не даешь не какой информации для анализа и хочешь чтобы тебе помогли
Gulik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пара вопросов [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 18.04.2008 14:28
Пара простых вопросов BETONOMESHALKA Общие вопросы Delphi 2 27.01.2008 10:30
Пара вопросов xak2 Общие вопросы Delphi 6 08.05.2007 20:58
пара вопросов Trooper Общие вопросы Delphi 3 05.11.2006 17:56