|
импорт из dbf файла
|
|||
---|---|---|---|
#18+
имеется dbf файл reg.dbf, из него необходимо извлечь данные и поместить в таблицу sql думаю делать по след. схеме: 1. открыть dbf файл getfile 2. scan 3. выбрать заполняемый справочник select найти запись соответствующую импортируемой строке locate for if found() выполнить замену данных в справочнике sql на данные из dbf (sqlexec, update) else выполнить добавление в справочнике недостающих записей endif endscan Вот что написала: reg=GETFILE('DBF', 'Открыть файл для импорта:', 'ОК',0) SCAN MySqlSelect= "select* from lgota order by name_lgot" i7= SQLEXEC(con, MySqlSelect, 'rv_lgot') LOCATE FOR rv_lgot.kod_lgot=reg.kod_lgot IF FOUND() endscan дальше не знаю что делать, посоветуйте пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2012, 23:33 |
|
импорт из dbf файла
|
|||
---|---|---|---|
#18+
В принципе, в MS SQL можно обратится напрямую к DBF-таблице через ODBC используя OpenRowset(), но если хочется именно построчная запись, то примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2012, 01:06 |
|
импорт из dbf файла
|
|||
---|---|---|---|
#18+
ВладимирМ, reg=GETFILE('DBF', 'Открыть файл для импорта:', 'ОК',0) scan MySqlSelect= "select* from lgota order by name_lgot" i7= SQLEXEC(con, MySqlSelect, 'rv_lgot') LOCATE FOR rv_lgot.kod_lgot=reg.kod_lgot IF FOUND() * Формируем текстовую строку с параметрами, содержащую несколько команд * для обновления данных на сервере Text to MySqlSelect noshow Update lgota Set f1 = ?reg.f1 ,f2 = ?reg.f2 where lgota.kod_lgot = ?reg.kod_lgot If @@rowcount = 0 Insert into lgota (kod_lgot,f1,f2) values (?reg.kod_lgot,?reg.f1,?reg.f2) EndText * В целях отладки можно посмотреть что находится в этой строке *?MySqlSelect * Собственно переброска данных из таблицы DBF до первой ошибки use reg.dbf in 0 alias reg shared select reg scan i7= SQLEXEC(con, MySqlSelect) if i7<0 exit endif endscan if i7<0 local laError(1) =AError(laError) MessageBox(laError[2]) else MessageBox('Закончили') endif endif endscan ошибок не выдаёт, но импорт е происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2012, 11:27 |
|
импорт из dbf файла
|
|||
---|---|---|---|
#18+
Не надо добавлять свой собственный код. То, что я написал - это законченный пример. Вместе с Вашим кодом получился "мусор". Ну, разве-что можно добавить выбор таблицы DBF, если Вы не знаете где она находится. Тогда ЗАКОНЧЕННЫЙ (не надо в него НИЧЕГО добавлять) пример будет примерно таким Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
PS: Разумеется, я надеюсь, Вы замените условные F1, F2 на имена Ваших полей таблиц. PPS: Очень желательно, чтобы Вы хотя бы читали справку FoxPro по используемым Вами же командам и функциям. Копирование кусков кода без понимания смысла того, что делает этот код - крайне порочная практика. Пока я не вижу, чтобы Вы понимали то, что делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2012, 15:13 |
|
импорт из dbf файла
|
|||
---|---|---|---|
#18+
slatapol, Мадам, оформляйте Ваши посты по-человечески. Когда пишете пост обратите внимание на кныпочку "SRC". Она помогает преобразить Ваш код из каши-малаши в удобочитаемый вид. Имей хоть малейшее уважение к тем, кому адресуете свой вопль о помощи. Читать "аляпистоскпированное" из фоксы и вставленное "абы-как" в пост очень не приятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2012, 12:24 |
|
|
start [/forum/topic.php?fid=41&msg=37887724&tid=1583562]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
5ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 432ms |
0 / 0 |