Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.02.2011, 20:03
IPOMAH IPOMAH вне форума
Прохожий
 
Регистрация: 07.01.2008
Сообщения: 5
Репутация: 10
Печаль БД на MS Access + ADO

Разрабатываю прогу выдачи одежды, это мой первый подобный проект, весь мозг сломал, не догоняю как сделать некоторые моменты:
1. на форме fLich есть JvDBGrid, в который читается таблица LichData, в поле "отдел" которой надо подставить значения из другой таблицы Podraz вместо содержащегося в нём ключа
2. на той же форме не получается в столбце "пол" выводить не галочки а "муж/жен"
3. на форме fMain есть ADOQuery2, в котором есть объединённый через UNION запрос к двум таблицам, реально ли его сделать таким образом, чтобы сначала выводились строки из 1-й таблицы а потом из 2-й?

Вот на этих 3-х вопросах застрял

Вот проект: http://narod.ru/disk/5385603001/DB-access.rar.html

Последний раз редактировалось IPOMAH, 11.02.2011 в 06:34.
Ответить с цитированием
  #2  
Старый 10.02.2011, 21:42
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

3) реально, ввести поле признак, как пример:
Код:
  select pole1, poleN, 1 as priznak from Table1
  union
  select pole1, poleN, 2 as priznak from Table2
  order by priznak
должно прокатить..
Ответить с цитированием
  #3  
Старый 10.02.2011, 22:01
IPOMAH IPOMAH вне форума
Прохожий
 
Регистрация: 07.01.2008
Сообщения: 5
Репутация: 10
По умолчанию

так то прокатило, но нужно чтобы порядок вывода был именно таким как в таблицах: таб1_id1, таб1_id2, таб1_id3..... таб2_id1, таб2_id2.....

с 3) всё в порядке! была сортировка по наименованию, спасибо Asinkrit! подкинул идейку, просто в поле priznak прибавил поле ID

Последний раз редактировалось IPOMAH, 10.02.2011 в 22:19.
Ответить с цитированием
  #4  
Старый 10.02.2011, 22:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1) Если тебе только для вывода, то соответсвенно пишешь запрос:
Код:
SELECT S.*, P.otdel
FROM SIZ S LEFT JOIN Podrazd P ON S.otdel_id = P.id
...
И в таблицу (грид) вместо SIZ.otdel_id выводишь P.otdel

Если надо выбирать, то надо делать Lookup - отдельный источник данных, который загружает подчиненую таблицу, а дальше надо смотреть как это реализовано в JvDBGrid. Я им не пользуюсь (сижу на DevExpress), так что тут подсказать не смогу.

2)
Код:
SELECT 
  S.*, 
  CASE S.
     WHEN S.sex=0 THEN 'муж'
     WHEN S.sex=1 THEN 'жен'
     ELSE 'гермофродит?'
  END as GENDER
FROM SIZ S
...

И опять же в гриде просто выводишь новое поле GENDER.
Ответить с цитированием
  #5  
Старый 11.02.2011, 19:25
IPOMAH IPOMAH вне форума
Прохожий
 
Регистрация: 07.01.2008
Сообщения: 5
Репутация: 10
По умолчанию

lmikle
это наверно в случае TADOQuery? а у меня там TADOTable, в форме редактируется таблица LichData...
вот вобщем проиллюстрировал всю загвоздку



пол пытался через DisplayValues = 'муж;жен' (через Object Inspector а не в коде), но почему то не прокатывает

отдел в ADOTable тоже пытался через LookupDataSet, и с остальными вытекающими... тоже нуль эффекта

там в проекте всё так и настроено, но не фунциклирует, мож я не все свойства указал?

-------

пол, как оказалось из-за особенностей JvDBGrid не отображался, заменил на dxDBGrid

-------

я уже хз чё делать... теперь уже и dxDBGrid не отображает пол муж/жен, хотя оригинальный DBGrid отображает нормально, но у DBGrid много недостатков, в числе которых - отсутствие автоматического выравнивания столбцов

ADOQuery неудобно использовать, т.к. у меня изменения/добавление записей вносятся именно в ADOTable

Последний раз редактировалось IPOMAH, 18.02.2011 в 20:45.
Ответить с цитированием
  #6  
Старый 09.03.2011, 21:27
IPOMAH IPOMAH вне форума
Прохожий
 
Регистрация: 07.01.2008
Сообщения: 5
Репутация: 10
По умолчанию

Ребят! Ещё один вопрос: как можно перемещать Recordset в пределах ADOTable?
Т.е. например если запись переместить на строчку вниз - то назначить индекс следующей записи к перемещаемой, а индекс перемещаемой - к следующей... Или это как то по другому делается? При попытке манипуляций с индексами дельфя матерится, мол не трожь индексы - это святое 8-)

Последний раз редактировалось IPOMAH, 09.03.2011 в 21:56.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter