Как мне сделать это выборочным заявлением? Я хочу, чтобы он посмотрел всю таблицу, нашел что-то и заменил ее чем-то другим. - PullRequest
0 голосов
/ 03 ноября 2010

Как мне сделать это оператором выбора?Это для доступа Microsoft.Я хочу, чтобы он просматривал всюду и в любой части любой ячейки во всей таблице, находил «Уголь 104» и заменял его «Лава 104»

Ответы [ 3 ]

1 голос
/ 03 ноября 2010

Вы можете сделать это с кодом VBA. Вам нужно будет перебрать все таблицы в вашей базе данных, а для каждой таблицы перебрать все поля.

Для каждого поля создайте оператор sql, чтобы обновить строки, содержащие искомое значение, и заменить его целевым значением. Затем выполните динамический SQL-оператор.

1 голос
/ 03 ноября 2010

С макушки головы.

Update myTable SET cell1 = Replace(cell1, 'Coal 104', 'Lava 104'), -- repeat for all cells in table
-- optional, but may run faster
WHERE cell1 LIKE '*Coal 104*' OR -- repeat for all cells in table

В случае необходимости сказать, делайте это только с полями VARCHAR.

0 голосов
/ 05 ноября 2010

Поскольку не совсем понятно, хотите ли вы обновить значения в таблице или можно просто показать новые значения, которые я разработал (это может быть даже полезно для лучшего понимания процесса).

Это таблица 'mytable', содержащая входные значения в ячейке 1

**cell1**
abc Coal 104 efg
abcdefg
othervalue
Coal 104 xyz
more

Если вы используете графический редактор запросов в MS Access, чтобы показать все значения (пока нет замены), Access создаст следующий SQL-запрос (щелкните правой кнопкой мыши в окне редактора и выберите «SQL-View»):

SELECT myTable.cell1
FROM myTable;

(ничего особенного на самом деле) Теперь, возвращаясь к окну графического редактора, вы можете вставить второе значение, например, cell1_new, который показывает замененное значение (это может быть полезно для «отладки» в любом случае), и вы получаете (снова в представлении SQL)

SELECT myTable.cell1, Replace([cell1],"Coal 104","Lava 104") AS cell1_new
FROM myTable;

выполнить запрос, который я вижу:

**cell1**          **cell1_new**
abc Coal 104 efg     abc Lava 104 efg
abcdefg              abcdefg
othervalue           othervalue
Coal 104 xyz         Lava 104 xyz
more                 more

(для ясности, это не обновляет значения в исходной таблице, это просто представление).

Используя графический редактор запросов, вы даже можете создавать UPDATE-запросы. Сначала измените тип запроса на «Обновить запрос» (я не уверен, что именно так он называется в английском MS Access). Во-вторых, вставьте свою замещающую 'формулу', которая использовалась для отображения значений для 'cell1_new', в строку Update чуть ниже cell1 myTable (без 'cell1_new:'). Удалите формулу для этого столбца cell1_new (поскольку мы теперь обновляем только значения в столбце cell1) Третий , поскольку было предложено ограничить значения, которые обновляются, только строками, содержащими «Уголь 104», поэтому введите « Уголь 104 » в строке критериев.

В графическом редакторе это должно выглядеть примерно так:

Field  cell1
Table  myTable Update
Replace([cell1],"Coal 104","Lava 104")
crieteria Like "*Coal 104*"

Снова проверка SQL-оператора (который мне легче понять, чем графическое представление) теперь читается так:

UPDATE myTable SET myTable.cell1 = Replace([cell1],"Coal 104","Lava 104")
WHERE (((myTable.cell1) Like "*Coal 104*"));

(я оставил эти надоедливые корзины в поле WHERE-Statement Access, чтобы оно выглядело одинаково).

Для завершения выполните этот запрос (например, нажмите восклицательный знак). Обычно (за исключением того, что вы изменили это поведение в настройках) Access спросит вас, действительно ли вы хотите обновить - в этом примере - два значения.

Надеюсь, это поможет понять, как использовать графический редактор для экспериментов с различными запросами. Я думаю, что в этом отношении Access не является плохим инструментом обучения.

НТН Andreas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...