select t1.id, t1.name, t2.name
from table1 t1
INNER JOIN table2 t2 ON (t1.id_2 = t2.id)
DBGrid нормальный вывод информации
Есть таблица контрагентов
Поля:
id - уникальный номер контрагента
name - наименование
id2 - уникальный номер головного контрагента
я дела нормальный вывод в копоненте DBGrid, настраиваю Columns
и как сделать, чтобы вместо id2 выводилось поле name из справочника контрагентов а не число.
допестим данные
id name id2
1 ; Вовочкин Вова ; 54235;
...
54235; Малышев Андрей; 26451;
а при выводе в DBGrid вывелось допустим не 54235 а Малышев Андрей
Заранее спасибо!
перехватывай событие отрисовки ячейки столбца id2. в этом событии вытаскивай из другой таблицы текст и выводи его на канву таблицы с соответствующим смещением
Цитата: Relax
перехватывай событие отрисовки ячейки столбца id2. в этом событии вытаскивай из другой таблицы текст и выводи его на канву таблицы с соответствующим смещением
это чего за перехват ?
просто
Код:
это можно подставить для вывода в Grid.
тот случай, что описан выше хорош для отрисовки изображений, а тексты Grid и сам ничего так рисует.:)
Цитата: mainigor
это чего за перехват ?
просто
это можно подставить для вывода в Grid.
тот случай, что описан выше хорош для отрисовки изображений, а тексты Grid и сам ничего так рисует.:)
просто
Код:
select t1.id, t1.name, t2.name
from table1 t1
INNER JOIN table2 t2 ON (t1.id_2 = t2.id)
from table1 t1
INNER JOIN table2 t2 ON (t1.id_2 = t2.id)
это можно подставить для вывода в Grid.
тот случай, что описан выше хорош для отрисовки изображений, а тексты Grid и сам ничего так рисует.:)
большое спасибо, я конечно думал запросом приджонить но думал есть другой способ. темболее я пользуюсь ADOTable, думал может какнить можно просто ссылочно скрестить... VS2005 позволяет такие штуковины делать.
Цитата: mainigor
это чего за перехват ?
просто
это можно подставить для вывода в Grid.
тот случай, что описан выше хорош для отрисовки изображений, а тексты Grid и сам ничего так рисует.:)
просто
Код:
select t1.id, t1.name, t2.name
from table1 t1
INNER JOIN table2 t2 ON (t1.id_2 = t2.id)
from table1 t1
INNER JOIN table2 t2 ON (t1.id_2 = t2.id)
это можно подставить для вывода в Grid.
тот случай, что описан выше хорош для отрисовки изображений, а тексты Grid и сам ничего так рисует.:)
не работает :)
select * from kontragents t1 INNER JOIN kontragents t2 ON (t1.id = t2.id_kontr)
вот запрос. он наверное не может сам на себя ссылатся. :(
Цитата: inkognitum
не работает :)
select * from kontragents t1 INNER JOIN kontragents t2 ON (t1.id = t2.id_kontr)
вот запрос. он наверное не может сам на себя ссылатся. :(
select * from kontragents t1 INNER JOIN kontragents t2 ON (t1.id = t2.id_kontr)
вот запрос. он наверное не может сам на себя ссылатся. :(
я то думал таблицы две.
вот вариант :
Код:
SELECT distinct k1.ID, k1.NAME, k2.Name
FROM KOTRAGENTS k1, KOTRAGENTS k2
WHERE k1.id_2=k2.id
FROM KOTRAGENTS k1, KOTRAGENTS k2
WHERE k1.id_2=k2.id
у меня работает
Цитата: inkognitum
не работает :)
select * from kontragents t1 INNER JOIN kontragents t2 ON (t1.id = t2.id_kontr)
вот запрос. он наверное не может сам на себя ссылатся. :(
select * from kontragents t1 INNER JOIN kontragents t2 ON (t1.id = t2.id_kontr)
вот запрос. он наверное не может сам на себя ссылатся. :(
Во первых - нормально построить базу данных.
Во вторых - ничто не мешает запросу ссылаться на самого себя, т.е. конструкция типа:
Код:
select * from kontragents t1 INNER JOIN kontragents t2 ON (t1.id = t2.id_kontr)
выглядит уродливо и не оптимально но вполне допустимо - при одном но - обязательно должен быть признак - генеральный это контрагент или нет или же ввести условие что уровней вложенности может быть не более одного. Т.е. окончательный вариант может быть примерно таким:
Код:
select t1.id, t1.name,t2.id AS gid,t2.name AS gname from kontragents t2 INNER JOIN kontragents t1 ON (t2.id = t1.id_kontr)
Цитата: inkognitum
большое спасибо, я конечно думал запросом приджонить но думал есть другой способ. темболее я пользуюсь ADOTable, думал может какнить можно просто ссылочно скрестить... VS2005 позволяет такие штуковины делать.
Lookup поле используй!!