Вместо N динамических форм - 1 форма с динамическим запросом. как скрывать поля в ленточно

_Промешан_
Дата: 18.01.2012 17:19:38
Выдыхаю.

Коль скоро нет ответа на вопрос - как связать две подчиненные формы, подразумевая, что в них подгружаются формы динамически, то возникает другой вопрос.

Как скрывать/отображать/неиспользовать поля в ленточной форме?

Смысл: есть запрос в виде хранимки. Он выдает примерно одинаковые данные, за исключением некоторых полей (колонок). Идея использовать одну форму, в которой напихать по-максимуму всех полей, но скрывать те, которые не актуальны для запроса.

Пример.

Запрос 1
idpriceworkwhere
122000копатьогород

Запрос 2
idpriceworkhow
122000копатьлопатой


На форму в ОбластьДанных напихать: id, price, work, where, how. И в зависимости от запроса - скрывать/показывать where и how в ленточном типе формы (т.к. она будет подчиненной и показывать все записи).
_Промешан_
Дата: 18.01.2012 17:23:13
Шаманить как-то с перемещением Section(acDetail) -> (acFooter)?
Может я ошибаюсь, но помоему me("Subform").Form!How.Visible = false не помогает.
Grigory_R
Дата: 18.01.2012 17:29:57
Рассмотрите вариант ActiveX, http://softdbgrid.ru/ ,vsFlexGrid & др.
_Промешан_
Дата: 18.01.2012 17:36:42
Grigory_R
Рассмотрите вариант ActiveX, http://softdbgrid.ru/ ,vsFlexGrid & др.

с софтдбгрид не совсем ясная ситуация - написано 2,47Мб, скачивается 940кб и при этом все в ехе. я конечно не набожный в этом плане, но осторожный.

Григорий, хотите сказать что в моем случае это никак не возможно средствами мс?
вадя
Дата: 18.01.2012 17:57:40
_Промешан_
Выдыхаю.

На форму в ОбластьДанных напихать: id, price, work, where, how. И в зависимости от запроса - скрывать/показывать where и how в ленточном типе формы (т.к. она будет подчиненной и показывать все записи).


не вижу проблем
при открытии кодом делай расположение полей и всё, просто много кода по определению положения полей
у неиспользуемых делай ширину 0 .
Grigory_R
Дата: 18.01.2012 18:01:31
автор
Григорий, хотите сказать что в моем случае это никак не возможно средствами мс?

конечно возможно, однако во многих библиотеках это решается 1 строчкой кода, например наполнение данными
SoftDBGrid0.SetQueryWithCols "select * from klienty".
751900
Дата: 19.01.2012 00:05:01
_Промешан_
Выдыхаю.

Коль скоро нет ответа на вопрос - как связать две подчиненные формы, подразумевая, что в них подгружаются формы динамически, то возникает другой вопрос.

Как скрывать/отображать/неиспользовать поля в ленточной форме?

Смысл: есть запрос в виде хранимки. Он выдает примерно одинаковые данные, за исключением некоторых полей (колонок). Идея использовать одну форму, в которой напихать по-максимуму всех полей, но скрывать те, которые не актуальны для запроса.

Пример.

Запрос 1
idpriceworkwhere
122000копатьогород

Запрос 2
idpriceworkhow
122000копатьлопатой


На форму в ОбластьДанных напихать: id, price, work, where, how. И в зависимости от запроса - скрывать/показывать where и how в ленточном типе формы (т.к. она будет подчиненной и показывать все записи).
если все поля одного типа (например все поля со списком, все просто поля), то можно для каждого поля подменять свойство "Данные". Для удобства имена полей в форме должны быть Field1 для поля, отражающего первый столбец, Field2 - второй и т.д.
Берем рекордсет, узнаем, сколько у него полей всего (в первом примере 3 поля, во втором 4)
Dim iCurrentField As Integer
Dim iLastField As Integer
iLastField = Me.Form.Recordset.Fields.Count
For iCurrentField = 1 To iLastField
  Me.Controls("Field" & iCurrentField).ControlSource = Me.Form.Recordset.Fields(iCurrentField).Name
Next i[id]

Ограничения:
* количество отображаемых данных будет ограничено заранее заложенным количеством полей
* пустые, не отображающие данные поля будут мозолить глаза на экране
Короче будет работать по принципу - с первого по последний рассчитайсь.
783800
Дата: 19.01.2012 00:22:00
а вот и работающий пример
_Промешан_
Дата: 19.01.2012 12:37:53
783800
а вот и работающий пример
да, наверное, только на ленточный вид это не повлияет.
_Промешан_
Дата: 19.01.2012 12:50:01
Grigory_R
автор
Григорий, хотите сказать что в моем случае это никак не возможно средствами мс?

конечно возможно, однако во многих библиотеках это решается 1 строчкой кода, например наполнение данными
SoftDBGrid0.SetQueryWithCols "select * from klienty".
Будет ли данная весчь работать у всех пользователей без установки Грида или всем надо будет доустанавливать его?