|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
В общем есть БД аля MSAccess Код: vbnet 1. 2. 3. 4.
Есть там в таблице назовем её 'outbox' поле назовем его 'file' Когда-то пути к файлам писались относительные fileout\4427B38D.tif fileout\7DF71D92E361ECCECC.tif Потом (лет 7 назад) понадобилось заменить на абсолютные вида C:\ProgramData\My Proga\fileout\4427B38D.tif C:\ProgramData\My Proga\fileout\7DF71D92E361ECCECC.tif Справился тогда так (path_AppData = "C:\ProgramData\My Proga"): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Сейчас при апгрейде до новой версии надо проапгрейдить это поле (имя папки данных программы меняется) Т.е. переношу БД, муваю папку с файлами в новое место, но надо стандартно поменять пути в самой БД к виду C:\ProgramData\My Proga New Name\fileout\4427B38D.tif C:\ProgramData\My Proga New Name\fileout\7DF71D92E361ECCECC.tif Т.е. надо произвести замену в начале каждой строки path_old_AppData= C:\ProgramData\My Proga\ на path_new_AppData= C:\ProgramData\My Proga New Name\ Очень давно этими SQL запросами не занимался, тупеем(С) м.б. кто сможет подсказать по быстрому чтоб мозг не рушить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 02:05 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
update <table> set field = REPLACE(field, from, to) ну или логику обновления по умнее, стоит проверить, что строка начинается с заданной, обрезать её и вставить новую ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 02:14 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
Roman Mejtes update <table> set field = REPLACE(field, from, to) ну или логику обновления по умнее, стоит проверить, что строка начинается с заданной, обрезать её и вставить новую Мне ну если дотошно, то надо WHERE file LIKE path_old_AppData + 'fileout\%'" то заменить path_old_AppData на path_new_AppData Записи стандартные path_old_AppData + жесткое имя подпапки fileout + имя файла с расширением Ну в принципе и ваш вариант REPLACE(field, from, to) без доп. проверок вполне пойдет path_AppData = IO.Path.Combine(GetFolderPath(SpecialFolder.CommonApplicationData), "My Proga Name") если конечно эта конструкция работает с этим типом БД, которая вообще говоря не Access а делается таким кодом Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Процедура разовая, решился наконец разделить большой проект "2 в 1" на два независимых, отсюда "My Proga New Name", но надо б юзерам дать возможность автоматически перенести данные при апгрейде. Ну я понял, надо пробовать, идея с REPLACE понятна ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 02:42 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
Первый этап обработки исключения типа "System.Runtime.InteropServices.COMException" в Microsoft.VisualBasic.dll Код: vbnet 1.
Undefined function replace The Jet Database Engine doesn't support some of the functions you can use in Access, one of them is the Replace function.Unfortunatly, their is no alternative available, so the only option is do the replace in C# (or VB) code. Не мой ли случай? И че делать? Трехэтажный код с извлечением каждой строки и запихиванием обратно? Неохота в это все врубаться. Еще логический вариант убрать первые N символов (длина 'C:\ProgramData\My Proga' считается и добавить 'C:\ProgramData\My Proga New Name' к остатку). Но хотелось бы через один запрос по любому без "do the replace in C# (or VB) code". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 20:51 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
Осилил: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 22:38 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
Дмитрий77 В общем есть БД аля MSAccess Код: vbnet 1. 2. 3. 4.
Есть там в таблице назовем её 'outbox' поле назовем его 'file' Когда-то пути к файлам писались относительные fileout\4427B38D.tif fileout\7DF71D92E361ECCECC.tif Потом (лет 7 назад) понадобилось заменить на абсолютные вида C:\ProgramData\My Proga\fileout\4427B38D.tif C:\ProgramData\My Proga\fileout\7DF71D92E361ECCECC.tif Справился тогда так (path_AppData = "C:\ProgramData\My Proga"): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Сейчас при апгрейде до новой версии надо проапгрейдить это поле (имя папки данных программы меняется) Т.е. переношу БД, муваю папку с файлами в новое место, но надо стандартно поменять пути в самой БД к виду C:\ProgramData\My Proga New Name\fileout\4427B38D.tif C:\ProgramData\My Proga New Name\fileout\7DF71D92E361ECCECC.tif Т.е. надо произвести замену в начале каждой строки path_old_AppData= C:\ProgramData\My Proga\ на path_new_AppData= C:\ProgramData\My Proga New Name\ Очень давно этими SQL запросами не занимался, тупеем(С) м.б. кто сможет подсказать по быстрому чтоб мозг не рушить. вам бы сделать доплнительную таблицу, вписать туда путь иди пути, заменить везде путь на параметр, и потом (через очередные 17 лет) менять в одно м месте - быстро и без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2021, 09:07 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
Ролг Хупин, Откуда ж я знаю что мне через 17 лет понадобится. Но за попытку помочь спасибо. Система с этой базой работает без нареканий 10+ лет, забыл про нее, но вот понадобился маленький change. Справился и ладно. Нет уж того программирования в этом мире, сам у себя копипастю мышкой потихоньку, вот и все развитие. На форумах уж почти никого нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2021, 17:38 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
Дмитрий77, используй ado.net ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2021, 19:24 |
|
Заменить начало строки во всех записях таблицы БД "Access" в определенном поле
|
|||
---|---|---|---|
#18+
pation Дмитрий77, используй ado.net Честно когда-то пытался, поспотыкался и забил, например: Эквивалент JRO.RefreshCache adoConn при переходе ADODB.Connection->OleDb.OleDbConnection Мне надо чтоб работало, оно работает. Я задал простой вопрос, простой ответ получен. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2021, 22:50 |
|
|
start [/forum/topic.php?fid=20&gotolast=1&tid=1398197]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 147ms |
0 / 0 |