|  | 
| 
Как сделать стандартную замену в конкретном поле таблицы БД 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&msg=38665859&tid=2156302]: | 0ms | 
| get settings: | 8ms | 
| get forum list: | 12ms | 
| check forum access: | 3ms | 
| check topic access: | 3ms | 
| track hit: | 40ms | 
| get topic data: | 10ms | 
| get forum data: | 2ms | 
| get page messages: | 61ms | 
| get tp. blocked users: | 2ms | 
| others: | 14ms | 
| total: | 155ms | 

| 0 / 0 | 
