Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с LookUpField в TADOQuery! Ошибка если код Null 
:(
    Опции темы
Mephisto
  Дата 24.7.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

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



Есть две таблицы:
Код
CREATE TABLE [dbo].[City] (
    [CodCity] [int] NOT NULL ,
    [CityName] [nvarchar] (50) 
)

и
Код
CREATE TABLE [dbo].[Test] (
    [CodTest] [int] NOT NULL ,
    [CodCity] [int] NULL ,
    [LongName] [varchar] (50) 
)

Связаные между собой по CodCity. 
В клиенте на Delphi создаю 2 TADOQuery где в запросе для 1 делаю выборку всего из Test, а во втором всего из City. К первому Query делаю LookUpField ссылающийся на второй по CodCity:
Код
object qryTestlookCity: TStringField
  FieldKind = fkLookup
  FieldName = 'lookCity'
  LookupDataSet = lookCity
  LookupKeyFields = 'CodCity'
  LookupResultField = 'CityName'
  KeyFields = 'CodCity'
  Size = 50
  Lookup = True
end

Все работает нормально пока CodCity в Test не Null! Выскакивает ошибка "An unknown error has occured". Как сделать так чтоб ошибку не высвечивало, а просто оставляло пустое поле в случае Null.

Спасибо. 
PM   Вверх
kobra
Дата 25.7.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

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



а не луще сделать запрос 
Код

SELECT CityName, ISNULL(LongName, '') AS LongName
FROM City C LEFT JOIN Test T ON C.CodCity = T.CodCity
и не мучатся с Lookup-ом? 
PM MAIL   Вверх
Mephisto
Дата 25.7.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

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



Цитата(kobra @  25.7.2006,  09:34 Найти цитируемый пост)
а не луще сделать запрос 

Не подходит. Таблица Test не ReadOnly!
Т.е. мне необходимо иметь все поля типа Data с таблицы Test и LookUp с таблицы City.
В TQuery проблем не возникает. Такое только в TADOQuery. smile 
PM   Вверх
Mephisto
Дата 31.7.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

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



Как можно отключить ошибку при передаче null в lookup? 
PM   Вверх
vchilikov
Дата 21.9.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.9.2006

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



У меня аналогичная проблема может ктонибудь подскажет как ее решить?
PM MAIL   Вверх
SergeBS
Дата 22.9.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

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



Mephisto, 
vchilikov, 
Страннная вы публика. Вначале хотите заполнения поля только значениями из справочника, а потом возмущаетесь, что при незаполненном поле выскакивает ошибка. Либо одно, либо другое надо выбрать. Выходов 2:
1. Завести в City поле с каким-то кодом Cod0 и CityName = ''. Этот Cod0 сделать значением по умолчанию для новых записей в Test. Т.е. поле null никогда не будет. Если по логике допустимо. Иначе - выбрать значение по умолчанию из существующих. Правильное решение с точки зрения нормализации и т.п. 
2. Отказаться от Lookup, т.е. разорвать связь между City и Test. Просто Combo, при старте - заполняется списком значений из City, но можно ввести ручками любое. Классическая ошибка в таких таблицах, поскольку в результате появляется куча названий одного и того же города, деревни, улицы ...
А вот это: 
Цитата

Как можно отключить ошибку при передаче null в lookup?  

бессмысленно по вполне очевидной причине. Либо есть связь со справочником - тогда null невозможен, либо нет связи со справочником - тогда lookup невозможен.

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


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(SergeBS @  22.9.2006,  08:39 Найти цитируемый пост)
Страннная вы публика. Вначале хотите заполнения поля только значениями из справочника, а потом возмущаетесь, что при незаполненном поле выскакивает ошибка. Либо одно, либо другое надо выбрать.

не согласен, есть поля в базах НЕ обязательные для заполнения

Добавлено @ 13:51 
vchilikov, Mephisto, сделайте так, чтобы в поля попадали нейтраные значения, например -1(минус один), т.е. -1 должно быть значением по-умолчанию.

Добавлено @ 13:53 
хорошо бы, конечно, как предлагает kobra, а заполнять таблицу с помощью хранимки
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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