Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft Access |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
наутилус Member Откуда: UA Сообщений: 1262 |
т.е. выбрать изз таблицы все поля кроме одного указаного? возможно такое сделать sql-запросом? |
12 июл 03, 12:19 [259672] Ответить | Цитировать Сообщить модератору |
IgorM Member Откуда: Тула - Москва, транзит Сообщений: 633 |
В Access имхо стандартных возможностей для этого нет. Динамический запрос не подойдет? |
12 июл 03, 13:20 [259681] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
Сорри за запрещенный вопрос, но зачем это нужно? Может, можно решить задачу другим способом? Взять все поля, а потом скрыть одно из них уже в форме (или для чего оно нужно)? |
12 июл 03, 13:39 [259689] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
Или такой вариант: написать программу, которая будет честно строить длинный селект, в котором будут перечислены все поля кроме одного. |
12 июл 03, 13:44 [259691] Ответить | Цитировать Сообщить модератору |
наутилус Member Откуда: UA Сообщений: 1262 |
2IgorM
например? =) 2Владимир Саныч не запрещённый =) работаю не с формой. Или такой вариант: чесно говоря возникла такая мысль, но надо быстро и сейчас. а для чего это нужно.. вот: есть таблица со счётчиком и кучей полей (около 20). надо сделать копию определённой записи. когда открываю таблицу, выделяю запись, копирую её в новую всё ок(значение счётчика автоматом обновляется) когда пытаюсь сделать
он мне говорит что невозможно добавить запись по причине нарушения уникальность ключа. вот и хотелось бы сделать что-то вроде select * кроме id.... =) в принципе уже сделал, но извратно. сначала копирую нужную запись в новую временную таблицу, потом во временной таблице удаляю поле счётчика, и уже потом из временной переписываю запись в исходную таблицу. |
||
12 июл 03, 14:05 [259698] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
20 полей - это не куча. Куча - это 100 и больше. По-моему, написать ручками селект из 19 полей было бы гораздо быстрее, чем ждать ответа из форума. И никакая временная таблица не нужна. |
12 июл 03, 14:53 [259708] Ответить | Цитировать Сообщить модератору |
Лох Позорный Member Откуда: Сообщений: 9898 |
Согласен с Санычем. Тем более конструктор запросов для ленивых никто не отменял. 19 галочек проставить не так уж и сложно. |
12 июл 03, 15:07 [259710] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
Даже 19 галочек не нужно. Дабл-кликаем по заголовку прямоугольника таблицы в верхней половине построителя, это выделяет в прямоугольнике все поля (невыделенная остается первая строчка со звездочкой). Тащим мышкой все выделенное в нижнюю половину. Потом одно поле стираем.
А временная таблица - это и медленно, и ненадежно. И это плата за что? За экономию нескольких минут работы программиста. |
12 июл 03, 16:04 [259723] Ответить | Цитировать Сообщить модератору |
наутилус Member Откуда: UA Сообщений: 1262 |
=)) раскритиковали.... "лень двигатель прогресса".... =) этот запрос надо делать из вба по кнопочке. т.е. не разово.. а структура таблицы в принципе может поменятся.. или название полей... а потом в коде вылавливать что же и где надо поменять.. это имхо не .... вобщем ленивый я =).. поэтому и сделал.. как я думаю более универсально. |
12 июл 03, 16:26 [259738] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
С момента задания вопроса прошло 4 часа. За это время можно было написать что-нибудь такое:
s = "" With CurrentDb.OpenRecordset(...) For Each f In .Fields If f.Name <> "ID" Then If s <> "" Then s = s & "," s = & f.Name End If Next .Close End With s = "select " & s & " from ..." Блин четыре раза. |
12 июл 03, 17:05 [259756] Ответить | Цитировать Сообщить модератору |
наутилус Member Откуда: UA Сообщений: 1262 |
когда я писал вопрос, я уже решил проблему как описал в 14:05. просто заинтересовал этот вопрос. вот и задал |
12 июл 03, 17:36 [259760] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
Все равно на пост от 14:05 ушло время, за которое можно было написать что-то типа моего от 17:05. Разрази меня гром, это будет работать надежнее и быстрее, чем временная таблица. |
12 июл 03, 18:00 [259765] Ответить | Цитировать Сообщить модератору |
IgorM Member Откуда: Тула - Москва, транзит Сообщений: 633 |
Имхо для таблицы будет еще быстрее TableDef открыть. |
12 июл 03, 19:42 [259793] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
Согласен с IgorM. |
12 июл 03, 22:45 [259834] Ответить | Цитировать Сообщить модератору |
наутилус Member Откуда: UA Сообщений: 1262 |
Все равно на пост от 14:05 ушло время, за которое можно было написать что-то типа моего от 17:05.
за то время пока читаешь форум, просматриваешь почту... кофе пьешь... и т.д. можно ого-го сколько сделать =)))) я решил вопрос, но меня заинтересовало как можно ещё. вот и спросил. Разрази меня гром, это будет работать надежнее и быстрее, чем временная таблица. надежней и быстрей??.. почему? |
13 июл 03, 10:47 [259892] Ответить | Цитировать Сообщить модератору |
VIG
Guest |
как-то видел решение аналогичной задачи для SqlServer.
Если народу интересно ,могу поискать и опубликовать |
13 июл 03, 11:16 [259893] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
Быстрее - потому что одну запись в файл сделать быстрее, чем две записи и одно стирание.
Надежнее - потому что при записях в файл бывают блокировки и конфликты между сессиями, и чем меньше записей в файл, тем их меньше. |
13 июл 03, 11:29 [259896] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
И кстати:
> в принципе уже сделал, но извратно. За этой фразой разве не стояло понимание, что этот способ по каким-то причинам нежелателен? |
13 июл 03, 11:44 [259898] Ответить | Цитировать Сообщить модератору |
наутилус Member Откуда: UA Сообщений: 1262 |
2VIG
если можно 2Владимир Саныч я уже где-то писал.." я только учусь". за этой фразой стояло понимание того, что я НЕ ЗНАЮ как сделать выборку всех полей кроме некоторых. но я сделал это. Было понимание, что наверное можно и лучше сделать. Наверное Ваш способ лучше =). когда в следующий раз возникнет такой вопрос, я уже буду знать КАК это можно сделать несколькими способами. =) эт называется.. "из-за дурной головы ногам покоя нет"... т.е. "рукам" =)))) |
13 июл 03, 12:07 [259904] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
Прошу на "ты", мне так понятнее. :^) |
13 июл 03, 12:11 [259905] Ответить | Цитировать Сообщить модератору |
VIG
Guest |
позаимствовано отсюда |
||
13 июл 03, 12:24 [259911] Ответить | Цитировать Сообщить модератору |
наутилус Member Откуда: UA Сообщений: 1262 |
2Владимир Саныч
ок =) 2VIG сэнкс... положим. в "копилку" =)) и будем пользоваться |
13 июл 03, 12:28 [259913] Ответить | Цитировать Сообщить модератору |
Лох Позорный Member Откуда: Сообщений: 9898 |
Быстрее - потому что одну запись в файл сделать быстрее, чем две записи и одно стирание.
А вот здесь я слегка не соглашусь. Конечно, добавить одну запись быстрее, чем добавить две и одну убить, но только если добавляют одним и тем же способом. А здесь - разными. Добавление записи SQL-запросом и добавление той же записи через объекты DAO - две большие разницы во времени. По другому и не может быть. Делается то одно и тоже, только еще и через дополнительную прослойку в виде DAO+VBA. Кто хочет - может провести замеры. |
13 июл 03, 12:34 [259916] Ответить | Цитировать Сообщить модератору |
наутилус Member Откуда: UA Сообщений: 1262 |
+ сначала надо пробежаться по всем полям (дабы выбрать название). а как вы сами говорили если полей больше 100... то может быстрее будет убить одно поле? |
13 июл 03, 12:44 [259918] Ответить | Цитировать Сообщить модератору |
Владимир Саныч Member Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты) Сообщений: 40414 |
2 Лох:
Простая арифметика. Случай 1. Делаем что-то (например, вставляем запись либо кушаем кактус). Случай 2. Делаем точно то же самое плюс что-то еще неважно каким способом. Что быстрее? Зависит ли это от чего-то? 2 наутилус: > если полей больше 100 Все равно. Когда приходится рисовать руками, то руки приходится беречь. А если программа, то какая разница, 20 или 2000? |
13 июл 03, 13:04 [259921] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft Access | ![]() |