|
|
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Задача: Есть форма [Фирма] на ней 3 свободных Edit`а, требуется эту форму использовать как подформу в табличном ввиде чтоб в этих Edit`ах была обобщённая информация Решение: Я сейчас попробовал так: попытался вносить информацию на событие OnCurrent получилость что во всех фирмах одинаковые поля. Дальше попытался прям в Edit в область "Данные" вставить строку =iif(isnull(Город); ""; "г." & Город & " ") & iif(isnull(Улица); ""; "ул." & Улица) ..., а эта конструкция ужастно тормазит, когда ведёшь скролинг то вообще ничего не видно когда-же останавливаешь то через секунду появляется. Если тыкаешь в эту область мышкой то вообще передёргивает и долго думает Вопрос: Как я могу сам в табличном виде заполнить Edit`ы? Могу привести полный пример адреса: =IIf(IsNull([ПочтовыйИндекс]);"";[ПочтовыйИндекс] & " ") & IIf(IsNull([Страна]);"";[Страна] & " ") & IIf(IsNull([Область]);"";IIf([ТипОбласти]="Край";" кр. " & [Область];IIf([ТипОбласти]="Область";" обл. " & [Область];IIf([ТипОбласти]="Республика";"республика " & [Область] & " ";[ТипОбласти] & " " & [Область] & " ")))) & IIf(IsNull([Город]);"";"г." & [Город] & " ") & IIf(IsNull([Улица]);"";"ул." & [Улица] & " ") & IIf(IsNull([Дом]);"";[Дом] & " ") & IIf(IsNull([Корпус]);"";[Корпус] & " ") & IIf(IsNull([Этаж]);"";"эт." & [Этаж]) & IIf(IsNull([Комната]);"";[Комната]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2004, 21:15 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Вместо этого \r \r =IIf(IsNull([ПочтовыйИндекс]);"";[ПочтовыйИндекс] & " ") & IIf(IsNull([Страна]);"";[Страна] & " ") & IIf(IsNull([Область]);"";IIf([ТипОбласти]="Край";" кр. " & [Область];IIf([ТипОбласти]="Область";" обл. " & [Область];IIf([ТипОбласти]="Республика";"республика " & [Область] & " ";[ТипОбласти] & " " & [Область] & " ")))) & IIf(IsNull([Город]);"";"г." & [Город] & " ") & IIf(IsNull([Улица]);"";"ул." & [Улица] & " ") & IIf(IsNull([Дом]);"";[Дом] & " ") & IIf(IsNull([Корпус]);"";[Корпус] & " ") & IIf(IsNull([Этаж]);"";"эт." & [Этаж]) & IIf(IsNull([Комната]);"";[Комната])\r \r лучше сделать /topic/69598&hl=mid\r \r И этот адрес надо воткнуть в запрос-источник данных формы. Тогда обновляться будет нормально.\r \r Только непонятно, что означает "ней 3 свободных Edit". Редактировать такие поля будет нельзя (без дополнительных усилий). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2004, 21:27 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
А редактировать и не надо, просто для экономии места надо в один запихнуть весь адрес, а если для каждого поля колонку держать то длинная получается. Во вторых Mid как будет работать если у меня написанно: ...IIf(IsNull([Город]);"";"г." & [Город] & " ")... здесь есть "г." ещё есть "ул." и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2004, 22:12 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
авторВо вторых Mid как будет работать если у меня написанно: ...IIf(IsNull([Город]);"";"г." & [Город] & " ")... здесь есть "г." ещё есть "ул." и т.д. Так не надо так писать, а надо так, как предложил Geo. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2004, 22:51 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Так в этом то и буда я не понял что он предложил. Как мне писать? Mid((" г." +Город) & (" ул." +Улица)) так? И что это будет? Мне надо результат примерно так (Россия кр.Краснодарский г.Краснодар ул.Лузана дом 13). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2004, 23:21 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
А еще проще было бы объединить несколько полей в поле "Адрес" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 09:15 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Этта точно! Вот никак не могли декомпостировать адрес типа: г.Мухосранск, мкр-н. им.Верхних Полей аэрации, набережная р.Вонючки, 1Б корпус 5 строение 1 владение А, вход через 3-ю арку слева от трансформаторной будки, 4 подъезд, 5,5 этаж комн.28 звонить 3 раза стучать пока не откроют ИМХО адрес (если почтовый конечно) не декомпозировать надо, а в текстовом поле записать. Ну, хотя бы его остаток (после индекса и города). А если в БД иностранные адреса появляются, то вообще только так можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 09:34 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
"Стандартное" (для меня) решение при наличии "расчетных" величин, которые хочется вводить руками (с пересчетом связанных полей): 1. Лента, вместо таблицы 2. Вместо "свободных" - по 2 поля одинаковых размеров 2.а. Вычисляемое (на переднем плане) - отображает вычисляемое значение 2.б. Поле ввода (под вычисляемым, без автоперехода по таб) 3. В вычисляемом по входу процедура: 3.а. - копирование значения из вычисляемого в поле ввода 3.б. - передача фокуса в поле ввода. 4. В поле ввода "после обновления" - процедура пересчета связанных полей. ___ Итого: возможность ввода в свободное поле + отображение актуальных для каждой записи значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 10:39 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
автор=IIf(IsNull([ПочтовыйИндекс]);"";[ПочтовыйИндекс] & " ") & IIf(IsNull([Страна]);"";[Страна] & " ") & IIf(IsNull([Область]);"";IIf([ТипОбласти]="Край";" кр. " & [Область];IIf([ТипОбласти]="Область";" обл. " & [Область];IIf([ТипОбласти]="Республика";"республика " & [Область] & " ";[ТипОбласти] & " " & [Область] & " ")))) & IIf(IsNull([Город]);"";"г." & [Город] & " ") & IIf(IsNull([Улица]);"";"ул." & [Улица] & " ") & IIf(IsNull([Дом]);"";[Дом] & " ") & IIf(IsNull([Корпус]);"";[Корпус] & " ") & IIf(IsNull([Этаж]);"";"эт." & [Этаж]) & IIf(IsNull([Комната]);"";[Комната]) mid((", " + [ПочтовыйИндекс]) & (", " + [Страна]) & (", " + lcase([ТипОбласти]) + [Область]) & (", " + [Город]) & (", " + [Улица]) & (", " + [Дом]) & (", " + [Корпус]) & (", эт. " + [Этаж]) & (", " + [Комната]);3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:24 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Если применить что подсказывает GEO то получиться: Россия, Краснодарский, Краснодар, Старокубанская, 116, , , 51, или Россия, Краснодарский, Краснодар, Коммунаров, 121, , , Мне данная надпись не нравиться, это не по человечески. И где здесь этаж? А компьютер создан для человека, а не на оборот! И если я хочу чтобы перед улицей стояло "ул." то так тому и быть. Другое дело если этот Access, мне он очень не понравился - но требование заказчика, так не может. Вот я и спросил умных людей как токовое возможно сотворить. Простой вариант я сам предложил но он тормозючий дальше некуда. Хотя лично мне непонятно что всё это время делает P4-2800 пока появляется надпись, ведь тормазит то на сервере, на клиенте ещё не проверял. Да и скорость винта на эти жалких 250 записей должно хватать выше крыши. Странно всё это. Так спрошу на всякий ещё раз: разве никто за всю историю компютероплавания не делал ЧЕЛОВЕЧЕСКИЙ адрес??? И как его отобразить в талбичной форме? В ленточной форме как брать поле отображаемого элемента? Например рисуется(как об этом узнать?) строка 10 - и как туда вписать без дополнительных запросов записать элемент 10? Нету ведь OnPaint. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 21:12 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
а ты попробуй сравни своё и то что GEO предложил. внимательно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 21:39 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
и везде пишется , что iif одна из самых тормознутых фичей рекомендуют использовать только в крайних случаях а у тебя в одном поле столько раз*250(записей)! вместо IIF(isnull([Город]).....) лучше IIF(Len([Город])=0, ....) по Гетцу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 21:47 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
То что я привёл как пример от GEO это из запроса скопированно. А вот моя запись(из отчёта): 320067 Россия кр.Краснодарский г.Краснодар ул.Красная 83 эт.4 оф.12 Это значительно понятней. Я говорю не от фонаря - я запись с запятыми показывал заказчику, а тот отверг сославшись "что мы запятые считать будем?" по тому и пристаю с более разборчивой записью. В файл и в отчёт я всё сделал на VB, а в табличную форму никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 23:07 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Гетцу безесловно лучше знать чем мне однако для меня это новость. На C++ быстрее будет работать if(str[0] == 0) чем вызов процедуры LEN - if(len(str) > 0). Что Базы данных не на Assembler`е написаны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 23:10 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Если не нравятся запятые, то способ Geo модифицируется в два прыжка: 1. Вместо ", " пишем " ". 2. Вместо 3 пишем 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 11:29 |
|
||
|
Форма в табличном виде - заполнение полей ввода
|
|||
|---|---|---|---|
|
#18+
Кстати, это тот самый случай, по которому мы с Geo немножечко поспорили в конце прошлого топика с подобным вопросом Когда в полях хранятся пробелы, а не Null. Другое дело, что это вопрос скорее к разработчику структуры БД, а не к отвечающим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 11:39 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32396213&tid=1676816]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 482ms |

| 0 / 0 |
