Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1
Зарегистрирован: 21.04.09
|
|
Отправлено: 21.04.09 15:43. Заголовок: Помогите советом начинающему...
Тут вот надумал переползти на xHarbour. Возникла следующая проблема: имена всех функций и подпрограмм дополняются префиксом HB_FUN_. А можно ли этого избежать так, чтобы остались родные, начальные имена. У меня весь софт построен на скриптах, в которых уже стоят вызовы функций и процедур по привычным, родным именам. И перелопатить везде в 5000 текстовых файлах-скриптах вызовы функций и поменять на новые - задача крайне утомительная с непонятной перспективой на успех.
|
|
|
Ответов - 294
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 45
Зарегистрирован: 21.04.09
|
|
Отправлено: 19.05.09 11:36. Заголовок: Pasha пишет: Алиас ..
Pasha пишет: цитата: | Алиас - это алиас рабочей области, в которой будет выполняться select 2 - имеется в виду ADS_CDX |
| Этот алиас будет создан автоматически? Какие еще значения параметров, кроме 2, можно задавать? А предыдущее мое сообщение (ответ на ваш вопрос) про принтер читали и какой ответ?
|
|
|
|
| Администратор
|
Пост N: 1141
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.05.09 11:51. Заголовок: надо сначала выбрать..
надо сначала выбрать РО вызовом Select(nSel) В этой РО и будет открыт запрос с алиасом cAlias
|
|
|
|
| постоянный участник
|
Пост N: 46
Зарегистрирован: 21.04.09
|
|
Отправлено: 19.05.09 13:52. Заголовок: Я делаю так: nsel=1..
Я делаю так: nsel=100 cPath='g:\abonent\dbf\' cSQL='select client,name from g:\abonent\dbf\client.dbf where street=20' cAlias='abc' Select(nSel) && if AdsGetConnectionHandle()=0 AdsConnect(cPath) && endif if AdsCreateSQLStatement(cAlias, 1) AdsPrepareSQL(cSQL) AdsExecuteSQL() endif ? alias(),reccount() Вызов Ф-ции AdsGetConnectionHandle() закомментирован, т.к. выдает неразрешенную ссылку. Диск G обслуживается локальным ADS (поэтому второй параметр в AdsCreateSQLStatement поставил 1 (2 тоже ставил - ничего не менялось)). В результате получал alias() = abc, reccount() = 0. Проверил, в базе client строки со street=20 имеются в количестве 1300 штук. Что я делаю не так?
|
|
|
|
| Администратор
|
Пост N: 1142
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.05.09 14:16. Заголовок: А поля видны ? ? FC..
А поля видны ? ? FCount(), Client, Name Условие where сработало ? Тип поля street числовой ? 2-й параметр AdsCreateSQLStatement: #define ADS_NTX 1 #define ADS_CDX 2 #define ADS_ADT 3
|
|
|
|
| постоянный участник
|
Пост N: 47
Зарегистрирован: 21.04.09
|
|
Отправлено: 19.05.09 15:28. Заголовок: fcount() = 196, но р..
fcount() = 196, но реально в базе client их всего 125. Поле street - числовое. Поля не видны, fieldname(1) - пусто
|
|
|
|
| постоянный участник
|
Пост N: 48
Зарегистрирован: 21.04.09
|
|
Отправлено: 25.05.09 12:54. Заголовок: Добрый день. Ну кто..
Добрый день. Ну кто подскажет как правильно SQL запрос вызвать? Это пока последнее, что мне нужно на ближайшее время. Со всеми остальными вопросами какт-то справился, даже с принтером временное решение нашел, т.к. FT_INT86 до сих пор не работает нормально
|
|
|
|
| moderator
|
Пост N: 180
Зарегистрирован: 06.07.06
|
|
Отправлено: 25.05.09 14:59. Заголовок: Вот такой пример у м..
Вот такой пример у меня работает ( test.dbf взято из harbour/tests ) #include "c:\harbour\contrib\rddads\ads.ch" FUNCTION main rddSetdefault("ADS") SET FILETYPE TO CDX SET SERVER LOCAL AdsConnect( ".\" ) IF !AdsCreateSqlStatement( ,2 ) ? "AdsCreateSqlStatement - error" RETURN ENDIF IF !AdsExecuteSqlDirect( "SELECT * FROM test WHERE AGE < 50" ) ? "AdsExecuteSqlDirect - error" RETURN ENDIF ? Reccount() ? RETURN
|
|
|
|
| постоянный участник
|
Пост N: 49
Зарегистрирован: 21.04.09
|
|
Отправлено: 25.05.09 15:56. Заголовок: Ура. Спасибо, уважае..
Ура. Спасибо, уважаемый. И у меня теперь заработало. Еще раз спасибо. Сейчас буду развивать достижение.
|
|
|
|
| постоянный участник
|
Пост N: 50
Зарегистрирован: 21.04.09
|
|
Отправлено: 25.05.09 16:50. Заголовок: Поторопился радовать..
Поторопился радоваться. Для локального ADS - работает, для Remote - не работает, выдает сообщение "AdsCreateSqlStatement - error", а все остальное с Remote сервером работает. Какие будут рекомендации?
|
|
|
|
| moderator
|
Пост N: 181
Зарегистрирован: 06.07.06
|
|
Отправлено: 25.05.09 19:00. Заголовок: Проверьте, что возвр..
Проверьте, что возвращает AdsConnect(): IF ! AdsConnect( <path> ) ? "No connection" RETURN ENDIF Кстати, в AdsConnect() что у вас указано ?
|
|
|
|
| постоянный участник
|
Пост N: 51
Зарегистрирован: 21.04.09
|
|
Отправлено: 26.05.09 09:48. Заголовок: alkresin пишет: Про..
alkresin пишет: цитата: | Проверьте, что возвращает AdsConnect(): |
|
alkresin пишет: цитата: | Проверьте, что возвращает AdsConnect(): |
| Добрый день Вот такой у меня проверочный тест. ? AdsConnect("m:\" ) if !AdsCreateSqlStatement( ,2 ) ? "AdsCreateSqlStatement - error" return endif select(100) if !AdsExecuteSqlDirect( "SELECT * FROM m:\abonent\dbf\client WHERE street=20" ) ? "AdsExecuteSqlDirect - error" return endif AdsConnect("m:\") = .t. Но при этом выдает "AdsExecuteSqlDirect - error". После этого программа успешно работает дальше, т.е. на m:\ нормально фукнционирует ADS REMOTE. Если "m:\" заменить на "g:\" (и в SQL запросе тоже), а на g:\ работает ADS Local - то все работает нормально выполняется
|
|
|
|
|
| moderator
|
Пост N: 182
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.05.09 12:44. Заголовок: Drive letters in pat..
Drive letters in paths of table names can only be used with Advantage Local Server. When using Advantage Database Server for NT or NetWare, fully qualified paths must use UNC (e.g., "\\server\volume\path\table"), because the SQL statement is parsed at the server where client-side drive letters are not meaningful. If relative paths are used in SQL statements, the path is considered to be relative to the connection path. For example, a table referenced as "..\alternate\info" would refer to a directory named "alternate" that would be expected to be parallel to the original connection path directory. Иными словами :), диск ( m:) указывается только для локального сервера. SQL запрос исполняется на сервере, а сервер не знает, на какую букву его распределили на вашей клиентской станции. Путь надо указывать относительно того, что прописан в AdsConnect(). Т.е., в вашем случае надо, по видимому, написать: AdsExecuteSqlDirect( "SELECT * FROM \abonent\dbf\client WHERE street=20" )
|
|
|
|
| постоянный участник
|
Пост N: 52
Зарегистрирован: 21.04.09
|
|
Отправлено: 26.05.09 13:09. Заголовок: Получилось. Спасибо ..
Получилось. Спасибо большое. Еще бы ссылку прислали где это можно почитать... Сейчас начну всех своих 95 пользователей на Харборе заставлять работать. Пусть еще какие-то ошибки и несответствия вылезут. А то я вчера с одной столкнулся - уже был в полном расстройстве и готов был от Харбора отказаться, т.к. непонятно что творилось. Таки нашел несовпадение в работе клиппера и Харбора. А еще сколько таких будет...
|
|
|
|
| moderator
|
Пост N: 183
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.05.09 13:56. Заголовок: Получилось. Спасибо ..
цитата: | Получилось. Спасибо большое. Еще бы ссылку прислали где это можно почитать... |
| Почитать - в help'е к ADS.
|
|
|
|
| Администратор
|
Пост N: 1147
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.05.09 19:38. Заголовок: Urri пишет: Имеются..
Urri пишет: цитата: | Имеются ввиду функции PrintReady() и PrintSend(). |
| Я добавил PrintSend для windows
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 27.05.09 12:39. Заголовок: Здравствуйте, Urri! ..
Здравствуйте, Urri! Если не секрет, какое решение нашел для определения готовности принтера? А то я некоторое время назад пытался здесь получить какое-нибудь решение, но ничего не вышло.
|
|
|
|
| постоянный участник
|
Пост N: 53
Зарегистрирован: 21.04.09
|
|
Отправлено: 27.05.09 13:06. Заголовок: Добрый день. wad1 п..
Добрый день. wad1 пишет: цитата: | Если не секрет, какое решение нашел для определения готовности принтера? А то я некоторое время назад пытался здесь получить какое-нибудь решение, но ничего не вышло. |
| Ничего нового, вернулся к старому аля'Клиппер решению: if isprinter(1) set console off set print on set printer to lpt1. set device to print ?? cText set print off set device to screen set console on endif В далекие времена я от этого варианта отказался в пользу работы через прерывание ft_int86 (я здесь уже писал об этом и о причинах), но сейчас пришлось вспомнить былое, т.к. заставить в харборе эту ф-цию работать пока не удалось
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 27.05.09 14:40. Заголовок: Почему-то мне не уда..
Почему-то мне не удалось от isprinter() получить реальной информации о готовности принтера: даже если он выключен, возвращается .t.
|
|
|
|
| постоянный участник
|
Пост N: 54
Зарегистрирован: 21.04.09
|
|
Отправлено: 27.05.09 15:59. Заголовок: wad1 пишет: Почему-..
wad1 пишет: цитата: | Почему-то мне не удалось от isprinter() получить реальной информации о готовности принтера: даже если он выключен, возвращается .t. |
| Может потому что очереди в Винде настроены для принтера? У меня пока работает - вот я глубоко не копаю, других проблем в Харборе нашлось. Надеюсь все-таки заставить FT_INT86 работать. А пока борюсь с клавиатурой. Пользователи привыкли к определенным комбинациям клавиш для выполнения нужной работы, а в Харборе работает на так как раньше. Например, в Клиппере AltR возвращало один код вне зависимости англ. раскладка или русс. включена в момент нажатия. А теперь в русской раскладке что AltR что К нету... Может кто знает как с этим бороться?
|
|
|
|
| |
Пост N: 1225
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.05.09 16:10. Заголовок: Urri пишет: Наприме..
|
|
|
Ответов - 294
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|