Автор | Сообщение |
|
| |
Пост N: 14
Зарегистрирован: 22.09.09
|
|
Отправлено: 17.02.11 12:38. Заголовок: Harbour + SQL
Начальство "наклоняет" переходить на MS SQL. В связи с этим вопросы: 1. Как с этим работает Harbour? 2. Есть ли какие-нибудь "грабли"? хитрости? 3. М.б. кто посоветует альтернативу? Речь идет о переводе всех баз данных предприятия (бухгалтерия, кадры, планово-экономический отдел). Все программы самописные - Clipper 5.2 (DOS), Clipper 5.2 + FW 1.9, Harbour + MiniGUI. О покупке чего-либо речь не идет. Начальство ратует за MS SQL Express Edition или "бесплатный брендовый аналог". Хотелось бы услышать ваше мнение.
|
|
|
Ответов - 136
, стр:
1
2
3
4
5
6
7
All
[только новые]
|
|
|
| |
Пост N: 180
Зарегистрирован: 05.11.05
|
|
Отправлено: 12.11.19 17:35. Заголовок: rvu пишет: Как мини..
rvu пишет: цитата: | Как минимум я к нему подключился и нужную мне информацию забрал. |
| Понадобилось забрать рисунки из MSSQL 2000, тип поля image и не знаю как. Даже не обязательно забрать в харборовскую базу, можно просто файлом рисунка, так даже лучше. Как бы это сделать?
|
|
|
|
| |
Пост N: 7137
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.11.19 17:40. Заголовок: rvu пишет: Как бы э..
rvu пишет: Погуглить можно......например вот
|
|
|
|
| |
Пост N: 181
Зарегистрирован: 05.11.05
|
|
Отправлено: 12.11.19 18:39. Заголовок: C#.....
C#...
|
|
|
|
| |
Пост N: 182
Зарегистрирован: 05.11.05
|
|
Отправлено: 14.11.19 08:29. Заголовок: В итоге то что нужно..
В итоге то что нужно, сделал на дельфи. Коллега нашел свою старую программу, которую я подправил под свои нужды. А C# у нас с ним так и не пошел. Та программа не заработала, а быстро разобраться с ней не смогли. Но в идеале было бы на харборе это сделать.
|
|
|
|
| Администратор
|
Пост N: 3895
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.11.19 12:04. Заголовок: rvu пишет: Но в иде..
rvu пишет: цитата: | Но в идеале было бы на харборе это сделать. |
| Можно использовать AdoRDD Можно работать с базой через механизм Ole, вызывая те же методы, что в примере по ссылке
|
|
|
|
| |
Пост N: 196
Зарегистрирован: 05.11.05
|
|
Отправлено: 13.12.19 15:19. Заголовок: Очередные проблемы с..
Очередные проблемы с MSSQL. Забираю себе данные из него. Если таблица довольно большая, то моя программа отваливается. Просто валится без всяких сообщений об ошибке. Критично не число записей, а именно размер таблицы. Т.е. если полей больше, то и отвалится программа при меньшем числе записей. Вопрос даже не в том, как этого избежать, хотя это было бы здорово. Но можно ли как-то само событие отследить, предупредить сваливание программы?
|
|
|
|
| moderator
|
Пост N: 1403
Зарегистрирован: 06.07.06
|
|
Отправлено: 13.12.19 20:21. Заголовок: rvu пишет: Если та..
rvu пишет: цитата: | Если таблица довольно большая, то моя программа отваливается. |
| А вы читаете всю таблицу одним запросом?
|
|
|
|
| |
Пост N: 197
Зарегистрирован: 05.11.05
|
|
Отправлено: 13.12.19 20:50. Заголовок: alkresin пишет: А в..
alkresin пишет: цитата: | А вы читаете всю таблицу одним запросом? |
| Я подключаюсь, как в этом примере: rvu пишет: цитата: | \MiniGUI\SAMPLES\Advanced\MSSQL\ |
| Затем работаю с таблицей, будто она dbf. Забрал данные из записи, skip и далее. А как надо? Я просто другого не нашел.
|
|
|
|
| moderator
|
Пост N: 1404
Зарегистрирован: 06.07.06
|
|
Отправлено: 14.12.19 09:32. Заголовок: Посмотрел этот приме..
Посмотрел этот пример - да, там действительно одним запросом берется вся база и конвертится в dbf. Это, конечно, самый простой способ, но ... Помимо того, что это не будет нормально работать на сколько-нибудь больших базах, это крайне неэффективно и противоречит самому смыслу использования клиент-серверной технологии. Подумайте: чтобы найти и посмотреть несколько записей, вы скачиваете с сервера всю базу. Если вам нужен обязательно browse всей базы, забирайте с сервера по частям - те куски, что будут сейчас на экране, может, с небольшим запасом. Я не знаком с minigui и его browse, но там должны быть какие-то обработчики, блоки кода, чтобы контролировать чтение данных из источника. В качестве примера, чтобы посмотреть, о чем речь, могу порекомендовать свой менеджер для sqlite: https://github.com/alkresin/dbc_sqlite. Это, естественно, на hwgui, но общая концепция от gui не зависит.
|
|
|
|
| |
Пост N: 1508
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.12.19 11:11. Заголовок: alkresin пишет: одн..
alkresin пишет: цитата: | одним запросом берется вся база и конвертится в dbf |
| Тоже пример посмотрел. Вроде нет там конвертации ни частями , ни целиком. Все в рамках идеологии клиент-сервер 1) Connect он и в любом сервере коннект 2) Create - тоже 3) Fill - обычный SQL запрос Insert into построчно 4) Browse - есть о чем поговорить , но для данного примера все правильно а поговорить вот о чем: SELECT * не всегда нужно , действительно лучше определенные поля и именно те которые нужны , запрос короче, выполняется быстрее , трафик меньше и тд. ( в этом примере нужны все ) BROWSE - не всю базу тащит сразу , а только на количество записей в окне самого бровса и не принципиально сколько там миллионов записей в базе, подкачка будет динамической если это бровс , а не грид по заранее заполняемому массиву. из подводных камней - только то что при навигации в пределах окна данных, бровс каждую запись дергает несколько раз ( во всяком случае TSBrowse из MG ), второй камень , это в бровсе подстановка данных ( вместо поля с ID , показываем значение из справочника ). И эти камни не относятся к SELECT * 5) и обычный Disconnect То что по частям бровсить может быть оптимальнее согласен, но в паре с кешированием этой части на клиенте и при плохом канале. При поиске разумеется SELECT cField WHERE cCondition, а не SELECT * и потом WHILE !cCondition
|
|
|
|
| moderator
|
Пост N: 1405
Зарегистрирован: 06.07.06
|
|
Отправлено: 16.12.19 12:29. Заголовок: Да, конвертации, вро..
Да, конвертации, вроде, нет - это я поторопился. Но все остальное - в силе. Проблема в этом предложении: DBUSEAREA( .T.,"SQLMIX", "SELECT * FROM "+Win1.txtTable.value, "table" ,,,,nSQLConnection ) Как я понял из rddsql/readme.txt, при этом выкачиваются сразу все записи (в исходники их лезть неохота, чтобы проверить) - это и ожидаемо, иначе программа не вылетала бы.
|
|
|
|
|
| постоянный участник
|
Пост N: 3001
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.12.19 13:25. Заголовок: rvu пишет Я подключа..
rvu пишет цитата: | Я подключаюсь, как в этом примере: \MiniGUI\SAMPLES\Advanced\MSSQL\ |
| В работе не использовал бы схему этого примера в лоб. Выборки получал бы в MEMIO\DBF или array для показа в TBROWSE\BROWSE с использованием WHERE и LIMIT, т.к. после WHERE может быть много записей и та же фигня цитата: | Критично не число записей, а именно размер таблицы. Т.е. если полей больше, то и отвалится программа при меньшем числе записей. |
| Для работы с DBUSEAREA( .T.,"SQLMIX", "SELECT * FROM "+Win1.txtTable.value, "table" ,,,,nSQLConnection ) ( дополненной WHERE LIMIT ) на TBROWSE вешал бы обработчики (можно кнопки) листания (смены LIMIT), но это, лениво, обошелся бы в большинстве случаев выборкой как сказал выше. Кроме просмотра есть и др. операции, т.е. для каких целей выборка.
|
|
|
|
| |
Пост N: 199
Зарегистрирован: 05.11.05
|
|
Отправлено: 16.12.19 16:09. Заголовок: SergKis пишет: т.е...
SergKis пишет: цитата: | т.е. для каких целей выборка |
| Лично мне нужно просто разово забрать все данные из базы sql. Дальше уже работаю с файлом dbf. Собственно, для этих целей я могу их и кусками забрать, а потом уже у себя склеить. Так что сейчас мне не критично разобраться в этом, это потом для красоты процесса можно.
|
|
|
|
| постоянный участник
|
Пост N: 1575
Зарегистрирован: 27.01.07
|
|
Отправлено: 16.12.19 17:28. Заголовок: rvu пишет: могу их ..
rvu пишет: цитата: | могу их и кусками забрать |
| Конечно кусками. Весь смысл SQL в оптимальных запросах.
|
|
|
|
| постоянный участник
|
Пост N: 3002
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.12.19 20:08. Заголовок: rvu пишет Лично мне ..
rvu пишет цитата: | Лично мне нужно просто разово забрать все данные из базы sql. Дальше уже работаю с файлом dbf. |
| Тогда, возможно, достаточно утилиты типа isql.exe (в mysql, fb есть, должна быть и для mssql). Запрос SELECT * FROM ... должен работать точно. Результат можно получать в xml или txt файлах и заливать в dbf для работы. Для команд INSERT, UPDATE, ... так же можно исп. эту утилиту. Работает быстро и работа в фоне ... тоже свои ++
|
|
|
|
| |
Пост N: 200
Зарегистрирован: 05.11.05
|
|
Отправлено: 17.12.19 08:08. Заголовок: SergKis пишет: Резу..
SergKis пишет: цитата: | Результат можно получать в xml или txt файлах и заливать в dbf для работы. |
| Это лишнее движение будет. Я запросом в sql делаю нужную мне выборку во временную таблицу, из нее напрямую перекачиваю данные в dbf.
|
|
|
Ответов - 136
, стр:
1
2
3
4
5
6
7
All
[только новые]
|
|