Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование Ado 
:(
    Опции темы
Golar
Дата 20.6.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.5.2006
Где: Россия, Воронеж

Репутация: нет
Всего: нет



Подскажите пожалуйста, я только начала изучать БД. если я пишу прогу с БД на Delphi и использую Access, то лучше работать с вкладкой Ado. у меня возникла проблема, наверно глупая, но я не знаю как ее решить. как отразить булевское поле в DBGrid, чтобы там было не true||false?, а например муж//жен? не используя создание полей для AdoQuery и установку там св-ва DisplayValues?   
PM MAIL   Вверх
Palladin
Дата 20.6.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 1
Всего: 17



Тебе обязательно для этого использовать DBgrid, если да то это сделать сложно(покрайней мере мне сложноsmile) но можно пойти по пути наименьшего сопротивления и просто когда ты будеш добавлять запись в БД, то все строки заносить через dbedit а булевские данные сделать через ... ну скажем dbcombobox 

Если подходит такой вариант отпиши здесь или мне на аську 243673233, я смогу помочь, лучше в асю там быстрееsmile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Golar
Дата 20.6.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.5.2006
Где: Россия, Воронеж

Репутация: нет
Всего: нет



спасибо, но при вставке у меня проблем пока нет, а проблема: как отразить запрос select уже существующей таблицы с булевским полем.
удобнее всего конечно создать поля для adoquery, но мне нужно этот же компонент(adoquery) использовать для запросов из др. таблиц, а тогда он ругается!!! это плохо, если у меня на одной форме будет несколько adoquery, отвечающих каждый за свою таблицу?

Добавлено @ 22:44 
а как определить кол-во записей в запросе селект, не пользуясь спец. функцией count? есть какое-нибудь поле? 
PM MAIL   Вверх
Palladin
Дата 22.6.2006, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 1
Всего: 17



Незнаю точно, но это вроде как невозможно, через селект я думаю нельзя, да и зачем это может быть нужно когда можно просто: 

Код

var
x:integer;
begin
x:=adotable1.RecordCount;
 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
bas
Дата 22.6.2006, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: 1
Всего: 2



Часть 4. Что можно поместить в DBGrid 

Это сообщение отредактировал(а) bas - 22.6.2006, 08:24
PM MAIL   Вверх
skyboy
Дата 22.6.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Golar, можно запрос просто сформулировать типа такого:
Код

SELECT id1,field1,"Муж" FROM table1 WHERE sex=True
UNION ALL
SELECT id1,field1,"Жен" FROM table1 WHERE sex=False

Где id1 и field1  - какие-то "левые" поля, к сути дела отношения не имеющие, но подчёркивающие логику запроса.
Идея ясна? Объединаяешь два запроса, каждый из которых в нужной позиции возвращает тебе пол константой... Правда, мне не нравится константы. Я бы использовал ещё одну таблицу 
idsex: logical   name_sex: string
   True                    Муж
   False                   Жен
И запрос тогда выглядел бы так:
Код

SELECT t.id1,t.field1,s.name_sex FROM table1 as t,sex_table as s WHERE t.sex=s.idsex

или так(будут выведены записи только тех людей, у которых пол указан):
Код

SELECT t.id1,t.field1,s.name_sex FROM table1 INNER JOIN sex_table s ON t.sex=s.idsex

или так(у тех, у которых пол не задан, будет выведено "бесполое создание")
Код

SELECT t.id1,t.field1,s.name_sex FROM table1 INNER JOIN sex_table s ON t.sex=s.idsex
UNION ALL
SELECT id1,field1,"бесполое" FROM table1 WHERE sex is null

или так(у тех, у которых пол не задан, будет возвращено значение "null")
Код

SELECT t.id1,t.field1,s.name_sex FROM table1 LEFT JOIN sex_table s ON t.sex=s.idsex

Этот метод "требует" наличия дополнительной таблицы, но если захочешь изменить названия полов(например, на "man"/"woman" или ещё чего), не придётся менять запрос, доступа к которому к тому времени уже может не быть(на руках - только программа без исходников)
примечание:
как мне кажется, UNION ALL будет работать бустрее UNION, так как не будет искать повторяющиеся значения. Если не прав - прошу меня исправить. 
PM MAIL   Вверх
Savek
Дата 22.6.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



А чем не нравится DisplayValue?
Мне кажется гораздо проще управлять отображением булевых значений так

ADOQuery.Open;
TBooleanField(ADOQuery.FieldByName('Sex')).DisplayValue:='Муж;Жен';

 
PM MAIL   Вверх
Golar
Дата 22.6.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 8.5.2006
Где: Россия, Воронеж

Репутация: нет
Всего: нет



Спасибо большое!!!! smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0709 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.