|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
БД Access Таблица MyTable Поле MyFilePath Я ранее писал относительный путь,т.е pictures\7DE42132E20EA1C8C8.jpg pictures\7DE42132E211283433.jpg В "новой версии программы" путь пишется полностью(в общем случае я убрал привязку к жесткому пути) : C:\Documents and Settings\All Users\Application Data\MyProga\pictures\7DE42132E20EA1C8C8.jpg C:\Documents and Settings\All Users\Application Data\MyProga\pictures\7DE42132E211283433.jpg В структуре базы ничего не менялось, но хочу сделать апгрейд записей при апгрейде версии программы, а то "новая версия" у меня не видит обкоцанных путей. Как сделать стандартную замену для всех записей в столбце таблицы? Ну по идее 1) Проверить что начинается с pictures\ 2) Если да, то дописать C:\Documents and Settings\All Users\Application Data\MyProga\ Желательно через adoConn.Execute ("UPDATE ...? -как то в этом духе. Мне просто это все не очень интересно, хотелось бы просто сделать побыстрее и забить, занимался этим всем давно. Рассчитываю что подскажут быстрее чем сам допру. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 06:08 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 07:43 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Antonariy, только, если не ошибаюсь, надо вместо "%" символ "*" ставить ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 08:13 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
может быть, давно я аксом не пользовался ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 08:26 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Antonariy, Спасибо, выручил. А то я уж было намылился рекордсеты перебирать и пребывал в унынии глубоком тупо соображая с какими флагами их открывать. Код грубо такой получился: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
HandKotAntonariy, только, если не ошибаюсь, надо вместо "%" символ "*" ставить Я поставил % - все сработало. В кодах 3-4 летней давности проверил - тоже в LIKE использую процент, нареканий в связи с этим не было. Antonariyможет быть, давно я аксом не пользовался Программа Access близко не использует, строго вот эту строчку на любых ОС для коннекта: Код: vbnet 1. 2.
Access 2000 я использую исключительно на моем developer компьютере для первоначального опытного конструирования базы и визуальной проверки чего получилось. Есть мелкие вопросы. При работе я активно пользуюсь: Код: vbnet 1. 2.
Здесь выкинуть или оставить? Или хотя бы обрамить одним блоком оба UPDATE? А также частенько использую Код: vbnet 1.
Добавить? Полагаю что не надо. Но при работе у меня очень интенсивная динамика (миллисекунды играют роль) работы С БД. А здесь надо просто запустить exe-апдейтер, открыть базу, выполнить код (так как я его написал) закрыть базу и закрыть апдейтер. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 08:59 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
вообще, один запрос или апдейт и так выплняется атомарно, а аксесс вроде бы вообще не поддерживает транзакции. можно выкинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 10:07 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Дмитрий77Программа Access близко не используетбазу-то использует. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 10:08 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Antonariyвообще, один запрос или апдейт и так выплняется атомарно, а аксесс вроде бы вообще не поддерживает транзакции. можно выкинуть. Судя по например вот этой статье: How To Speed Up Data Access by Using BeginTrans & CommitTrans как раз поддерживает и с большой пользой для себя. И я так думаю не случайно это стал использовать. А оставлю как нарисовал 2 блока, хуже то точно не будет. Вот JRO.RefreshCash судя по всему здесь не нужен, я ведь не запрашиваю те же самые данные заново в рамках своей единственной в этом контексте процедуры. Я так понимаю транзакция нужна чтоб записать в базу "как только так сразу" (out-буфер). А JRO.RefreshCash чтоб прочитать самые свежие данные-обновить их непосредственно перед чтением (in-буфер). AntonariyДмитрий77Программа Access близко не используетбазу-то использует. В программе база создается при инсталляции без участия Access-а. Речь идет об mdb (строку коннекта я привел) а не об MSAccess форматы баз которого гуляют от версии к версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 10:44 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Дмитрий77В программе база создается при инсталляции без участия Access-а.какая разница? база-то аксессовская, а не какая-то еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:38 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Antonariy, ну с этим вроде все ясно, здесь думаю проблем уже не будет. Ты б мне лучше в сурьезных вещах чего умное подсказал. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:52 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Antonariy Код: sql 1.
А если у меня в базе C:\Documents and Settings\All Users\Application Data\MyProga \pictures\7DE42132E20EA1C8C8.jpg C:\Documents and Settings\All Users\Application Data\MyProga \pictures\7DE42132E211283433.jpg а при переносе на другую систему мне надо сделать H:\ProgramData\MyProga \pictures\7DE42132E20EA1C8C8.jpg H:\ProgramData\MyProga \pictures\7DE42132E211283433.jpg Т.е. условие выбора понятно: where myfilepath like ' %pictures\% ' А то чего соответствует первому % -либо пусто, либо - любая строка - ее надо убрать и заменить на заданную, т.е. update mytable set myfilepath=H:\ProgramData\MyProga\' + <то что начинается с pictures\> where myfilepath like ' %pictures\% ' ================================== Или например более общий случай: У меня в базе <любой путь кот. может вообще не быть\> 7DE42132E20EA1C8C8.jpg <любой другой путь кот. может вообще не быть\> 7DE42132E211283433.jpg а при переносе на другую систему мне надо сделать H:\ProgramData\MyProga\pictures\7DE42132E20EA1C8C8.jpg H:\ProgramData\MyProga\pictures\7DE42132E211283433.jpg Т.е. 1) Условие выбора: -любая строчка где поле не пустое (не "" и не NULL) 2) Замена: <New fix path\> + только имя файла(справа от правого \ если есть) ======================================= P.S пока мне нужен только вариант where myfilepath like '[b]%pictures\% c дописыванием NewPath перед pictures\% (но обрубить лишнее начало надо если оно есть) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2014, 20:32 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Дмитрий77А если у меня в базе C:\Documents and Settings\All Users\Application Data\MyProga \pictures\7DE42132E20EA1C8C8.jpg C:\Documents and Settings\All Users\Application Data\MyProga \pictures\7DE42132E211283433.jpg а при переносе на другую систему мне надо сделать H:\ProgramData\MyProga \pictures\7DE42132E20EA1C8C8.jpg H:\ProgramData\MyProga \pictures\7DE42132E211283433.jpg Почитал первое что нашел: 12.5 String Functions Родил вот такое: Код: vbnet 1. 2.
Вроде фурычит. Про LEN вместо CHAR_LENGTH() или LENGTH() , которые ругались вычитал поиском - видимо это mdb-приблуда SUBSTRING FROM INSTR() не заработала. На второй общий вариант пока мне не надо - забью. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2014, 22:50 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Дмитрий77, в VBA есть ещё строковых функций InStrRev (string, strWhatFind) Mid (string, intFrom, intCount). Код: vbnet 1. 2. 3. 4. 5.
По-идее должно и в Jet отработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 02:50 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
Дмитрий77, тут подумал, если не брать "общий случай" и пути одинаковые, то можно просто написать есть автор Код: plaintext 1.
H:\ProgramData\MyProga\pictures\7DE42132E20EA1C8C8.jpg H:\ProgramData\MyProga\pictures\7DE42132E211283433.jpg Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 08:13 |
|
Как сделать стандартную замену в конкретном поле таблицы БД mdb.
|
|||
---|---|---|---|
#18+
HandKotДмитрий77, тут подумал, если не брать "общий случай" и пути одинаковые, то можно просто написать Код: sql 1.
Низя. потому что при переносе XP ->(вистообразные): Код: vbnet 1.
а при переносе (вистообразные) -> XP Код: vbnet 1.
Да и диск установки OS C:\ D:\ заранее не известен. В необщем случае известно, что файлы хранятся в стандартном месте {CommonAppData}\Proga\Pictures\ Единственное, к чему я могу привязываться это %Pictures\% , т.е. папка Pictures\ -зарезервированное имя. А в общем случае я допускаю, чтоб юзер мог менять "место папки" (и ее имя) на любое. Но в сторону "общего случая" пока сделаны только предварительные шаги и настройки "скрыты", там еще нужно допродумывать логику, поэтому пока черт с ним с общим. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 09:15 |
|
|
start [/forum/topic.php?fid=60&tid=2156302]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 291ms |
total: | 549ms |
0 / 0 |