Поиск:

Ответ в темуСоздание новой темы Создание опроса
> lookup по нескольким полям 
:(
    Опции темы
felyeton
Дата 12.7.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток, уважаемые!!!
Вопрос таков: имеются две таблицы: 


Код

CREATE TABLE [dbo].[ZAMERY](
    [ZAMER_YEAR] [int] NOT NULL,
    [ZAMER_SEASON] [nvarchar](5) NOT NULL,
 CONSTRAINT [PK_ZAMERY] PRIMARY KEY CLUSTERED 
(
    [ZAMER_YEAR] ASC,
    [ZAMER_SEASON] ASC
)ON [PRIMARY]
) ON [PRIMARY]

GO


CREATE TABLE [dbo].[DOCS](
    [DOC_NAME] [nvarchar](50) NOT NULL,
    [ZAMER_YEAR] [int] NOT NULL,
    [ZAMER_SEASON] [nvarchar](5) NOT NULL,
 CONSTRAINT [PK_DOCS] PRIMARY KEY CLUSTERED 
(
    [DOC_NAME] ASC,
    [ZAMER_YEAR] ASC,
    [ZAMER_SEASON] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[DOCS]  WITH CHECK ADD  CONSTRAINT [FK_DOCS_ZAMERY] FOREIGN KEY([ZAMER_YEAR], [ZAMER_SEASON])
REFERENCES [dbo].[ZAMERY] ([ZAMER_YEAR], [ZAMER_SEASON])
GO
ALTER TABLE [dbo].[DOCS] CHECK CONSTRAINT [FK_DOCS_ZAMERY]


MS-SQL, разумеется.

//Есть 2 АДОДатасета:

Код

 object adsDocuments: TADODataSet
    Connection = ADOConnection1
    CursorType = ctStatic
    CommandText = 'select DOC_NAME, ZAMER_YEAR, ZAMER_SEASON from DOCS'
    Parameters = <>
    Left = 192
    Top = 80
    object adsDocumentsDOC_NAME: TWideStringField
      FieldName = 'DOC_NAME'
      Size = 50
    end
    object adsDocumentsZAMER_YEAR: TIntegerField
      FieldName = 'ZAMER_YEAR'
    end
    object adsDocumentsZAMER_SEASON: TWideStringField
      FieldName = 'ZAMER_SEASON'
      Size = 5
    end
    object adsDocumentsLOK: TStringField
      FieldKind = fkLookup
      FieldName = 'LOK'
      LookupDataSet = adsZamer
      LookupKeyFields = 'ZAMER_YEAR;ZAMER_SEASON'
      LookupResultField = 'PERIOD'
      KeyFields = 'ZAMER_YEAR;ZAMER_SEASON'
      Lookup = True
    end
  end
  object adsZamer: TADODataSet
    Active = True
    Connection = ADOConnection1
    CursorType = ctStatic
    CommandText = 
      'select ZAMER_YEAR, ZAMER_SEASON ,cast(ZAMER_YEAR as nvarchar(4))' +
      '+'#39' '#39'+ZAMER_SEASON as PERIOD from ZAMERY'
    Parameters = <>
    Left = 192
    Top = 136
    object adsZamerZAMER_YEAR: TIntegerField
      FieldName = 'ZAMER_YEAR'
    end
    object adsZamerZAMER_SEASON: TWideStringField
      FieldName = 'ZAMER_SEASON'
      Size = 5
    end
    object adsZamerPERIOD: TWideStringField
      FieldName = 'PERIOD'
      ReadOnly = True
      Size = 10
    end
  end
 
  end


И в Дельфи надо добиться лукапа по двум полям.

Чтобы при выборе из ПикЛиста менялось значение в ДВУХ полях, а не в одном...
Чтобы без ID и подобных ему автоинкрементов.

Ну не работает ни хрена, вылетает ошибка Field 'ZAMER_YEAR;ZAMER_SEASON'not found (почему-то одно...)

Помогите пожалуйста, заранее благодарен!!!
PM MAIL   Вверх
Marduk
Дата 12.8.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если не ошибаюсь, то в LookupComboBox есть два значения DataSet и LookupDataSet. Вот значения KeyFields и LookupKeyFields должны совпадать по типу, по ним идет связка. здесь у тебя два поля ключевые - ZAMER_YEAR;ZAMER_SEASON, смотришь ты по полю 'LOK', а результат выводится в поле 'PERIOD' (как я понял).. Может я ошибаюсь, но в приведенных таблицах я не вижу поля 'LOK', а 'PERIOD' это алиас lookup поля. иногда при обращении к полю по алиасу вылетает ошибка, мол нет такого поля. У меня к сожалению нет сейчас возможности проверить свои догадки, но я думаю здесь дело в lookup поле. поле 'LOK' меня смущает немного

Это сообщение отредактировал(а) Marduk - 12.8.2007, 20:23
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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