powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP COM server, с DBF файлами на сервере
25 сообщений из 30, страница 1 из 2
VFP COM server, с DBF файлами на сервере
    #35686677
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть класс на основе Line,
в методе Init открываю таблицу и открываю индекс (use table.dbf in 0; set order to ind_xxx),
есть метод getdata, его код примерно такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
PARAMETERS nomer as String, kol as Integer

retStr=''
SELECT mpdl
SEEK nomer
IF FOUND()
    FOR k= 1  TO kol
           retStr = retStr + ALLTRIM(mpdl.uch)+';'+ALLTRIM(mpdl.npd)+';'+ALLTRIM(mpdl.fm)+';'+ALLTRIM(mpdl.im)+';'+ALLTRIM(mpdl.ot)+CHR( 13 )+CHR( 10 )
               SKIP
           ENDFOR
        ENDIF

RETURN retStr

если переменная nomer = '000000', то должны были выбраться записи с 000000 по kol (количество записей)

Но Фокс_ком_сервер , почему то не чувствует индекс, выбирает постоянно начиная с первой записи.

Проверял не через ком (просто открыл таблицу и тд.) все идет как надо.

Что может быть. И вообще правильно ли я делаю. Знаю что нужно ве это через SQL-servers, но так тоже ведь должно работать.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35686688
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ставил и после Select, Set Order To ind_xxx
таже история
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35686849
VictorSK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Set order to 0
Не знаю почему надо делать так, но эту проблему я решил таким вот образом.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35686919
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Конечено же надо через команду SELECT (в ней-же даже можно определить использование индекс)
2. Если использовать Ваш подход (что для FoxPro будет возможно даже быстрее чем через SELECT):
- используйте seek() с параметрами
- дале используйте DOWHILE с Вашим условием выборки

Good luck!
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35687580
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1010100021
Но Фокс_ком_сервер , почему то не чувствует индекс, выбирает постоянно начиная с первой записи.

Проверял не через ком (просто открыл таблицу и тд.) все идет как надо.

Что может быть. И вообще правильно ли я делаю. Знаю что нужно ве это через SQL-servers, но так тоже ведь должно работать.

1. Рядом с СОМ-сервером лежит ли config.fpw и что в нём написано
2. Какие установки SET ANSI, SET EXACT
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35687582
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И 3) какое выражение индекса по которому ищется строка.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35688497
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделай reindex на всякий случай
почитай что другие написал скорей так и есть
set exact гляди - кстати ты можешь включать config.fpw в проект

а еще заведи себе метод в OLE (или просто функцию) и пиши в файл для отладки что тебе надо - чтобы понять проблему
вот у меня типа

# DEFINE Err_LogTxt [c:\gl1_log.txt]
* -----------------------------------------------------
FUNCTION Logit
PARAMETERS S1 , Str2

IF TYPE('S1') != 'C' && empty - просто событие
S1 = '' && ' ?тип'
ENDIF

* PROGRAM(PROGRAM(-1)-1) предыдущая прога
* TRANSFORM без параметров приводит к строке
S1 = + d_CRLF + TRANSFORM (DATETIME()) + ' ' + PROGRAM(PROGRAM(-1)-1) + ' ' + S1

IF TYPE('Str2') = 'C'
S1 = S1 + d_CRLF + Str2 + d_CRLF
ENDIF

STRTOFILE( ALLTRIM(S1), Err_LogTxt , .T.)
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35688955
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VictorSKSet order to 0
Не знаю почему надо делать так, но эту проблему я решил таким вот образом.

Пишет, что "Не указан порядок сортировки" :-(
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35688957
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Установки:
Код: plaintext
1.
2.
3.
SET DATE GERMAN
SET NEAR ON
SET EXACT ON
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35688958
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWistИ 3) какое выражение индекса по которому ищется строка.

Просто индекс по полю
Код: plaintext
npd
(размерность поля 6 символов)
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35689258
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VictorSKSet order to 0
Не знаю почему надо делать так, но эту проблему я решил таким вот образом.

Если можно пожалуйста приведите пример кода.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35689495
VictorSK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Вы работаете через COM-DLL, то создавайте на стороне сервера курсор с order by и передавайте его клиенту.
При условии создания индекса на стороне клиента index on, я делаю после его создаия set ordert to 0 и тогда выборка сортируется по нужному мне полю. Правда использую это в редких случаях. В основном сортировка приходит с сервера.
При технологии клиент-сервер клиент и не знает где находятся таблицы, все делает сервер.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35689952
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VictorSK
> При условии создания индекса на стороне клиента index on, я делаю
> после его создаия set ordert to 0 и тогда выборка сортируется по нужному
> мне полю.

До чего техника дошла. Сделал set order to 0 и хоба це - курсор отсортирован
так как мне надо.

А я сижу, башку ломаю как же мне надо и что для этого сделать... :-(


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35691566
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VictorSKЕсли Вы работаете через COM-DLL, то создавайте на стороне сервера курсор с order by и передавайте его клиенту.
При условии создания индекса на стороне клиента index on, я делаю после его создаия set ordert to 0 и тогда выборка сортируется по нужному мне полю. Правда использую это в редких случаях. В основном сортировка приходит с сервера.
При технологии клиент-сервер клиент и не знает где находятся таблицы, все делает сервер.

Зачем передавать целый курсор, нужно на сервере выбрать записи и передать строку клиенту.
А он не видит индекс. Один вопрос - почему не видит, почему не работает как надо? должен ведь...
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35691629
VictorSK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он и не должен видеть индекс.
Клиент получает курсор, который ему передал сервер.
Смотрите что у Вас формирует сервер. У меня при использовании order by проблем нет.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35692028
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VictorSKОн и не должен видеть индекс.
Клиент получает курсор, который ему передал сервер.
Смотрите что у Вас формирует сервер. У меня при использовании order by проблем нет.

Если он это клиент, то конечно не должен. Я про сервер, сервер у меня не чувствует индекс, на сервере делаю set order to ind_xxx, хочу найти строку которую передал клиент, но строка не находится и данные всегда приходят начиная с первой записи в таблице...

VictorSKУ меня при использовании order by проблем нет.

Нет проблем на сервере где используется set order to, так я понял?
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35692231
VictorSK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сервере я не использую set order, в SQL-Select сортирую по order by.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35693710
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET EXACT OFF
елси длина выражения поиска меньше чем длина выражения в индексе
да и вобщем ИМХО удобней всегда иметь SET EXACT OFF не даром она по дефолут стоит

SEEK nomer
IF FOUND()
FOR k=1 TO kol
retStr = retStr + ALLTRIM(mpdl.uch)+';'+ALLTRIM(mpdl.npd)+';'+ALLTRIM(mpdl.fm)+';'+ALLTRIM(mpdl.im)+';'+ALLTRIM(mpdl.ot)+CHR(13)+CHR(10)
SKIP
ENDFOR
ENDIF
ззы я же говорил выведи нужну инфу тебе в лог а для тебя это
nomer, SET('EXACT')
order() dbf() FOUND() retSt
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35693856
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PARAMETERS nomer as String, kol as Integer

retStr=''
SELECT mpdl
********************************************
ВСТАВЬСЮДА:
*******************************************
set order to ИМЯ_ИНДЕКСА_ТЭГА
**И всё будет хорошо. А сейчас не указано, с каким индексом работать. Остальное - хорошо ))
SEEK nomer
IF FOUND()
FOR k=1 TO kol
retStr = retStr + ALLTRIM(mpdl.uch)+';'+ALLTRIM(mpdl.npd)+';'+ALLTRIM(mpdl.fm)+';'+ALLTRIM(mpdl.im)+';'+ALLTRIM(mpdl.ot)+CHR(13)+CHR(10)
SKIP
ENDFOR
ENDIF

RETURN retStr

Проверял не через ком (просто открыл таблицу и тд.) все идет как надо.

Что может быть. И вообще правильно ли я делаю. Знаю что нужно ве это через SQL-servers, но так тоже ведь должно работать.[/quot]
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35694699
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FAMPARAMETERS nomer as String, kol as Integer

retStr=''
SELECT mpdl
********************************************
ВСТАВЬСЮДА:
*******************************************
set order to ИМЯ_ИНДЕКСА_ТЭГА
**И всё будет хорошо. А сейчас не указано, с каким индексом работать. Остальное - хорошо ))
SEEK nomer
IF FOUND()
FOR k=1 TO kol
retStr = retStr + ALLTRIM(mpdl.uch)+';'+ALLTRIM(mpdl.npd)+';'+ALLTRIM(mpdl.fm)+';'+ALLTRIM(mpdl.im)+';'+ALLTRIM(mpdl.ot)+CHR(13)+CHR(10)
SKIP
ENDFOR
ENDIF

RETURN retStr

Проверял не через ком (просто открыл таблицу и тд.) все идет как надо.

Что может быть. И вообще правильно ли я делаю. Знаю что нужно ве это через SQL-servers, но так тоже ведь должно работать.

1010100021
Ставил и после Select, Set Order To ind_xxx
таже история

:(
буду вертеть дальше....
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35694703
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гулин Федор...
ззы я же говорил выведи нужну инфу тебе в лог а для тебя это
nomer, SET('EXACT')
order() dbf() FOUND() retSt

попробую реализовать.
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35695006
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Завел себе лог как посоветовал Гулин Федор .
Так вот вроде сервер и индекс открывает и запись находит, но данные опять таки начиная с первой записи тусует......непонятно
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35695020
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тебе раз, при создании через Createobjectex пишет "Требуемый класс отсутствует в ClassFactory ", пересоздал, таже беда
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35721175
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что же делать???????????????????????

Вот код класса:
Код: plaintext
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.
DEFINE CLASS srv as Session OLEPUBLIC

PROCEDURE Init
    SET DATE GERMAN 
    SET DELETED ON
    SET EXCLUSIVE OFF
    SET NEAR ON
    SET EXACT OFF
    IF CPCURRENT() <>  1251 
      = SYS( 2300 ,  1251 )  && Russia
    ENDIF
    IF SYS( 3004 ) <> '1049'
       = SYS( 3004 ,  1049 ) && Russia
    ENDIF
ENDPROC

PROCEDURE getnpd 
PARAMETERS npd as String, kol as Integer 
retval="Мне передали параметр npd -|"+npd+"|"+CHR( 13 )+CHR( 10 )

    USE c:\tables\mpdl.dbf IN  0 
    SELECT mpdl
    SET ORDER TO indnpd
    retval=retval+'Индекс - '+ORDER()+CHR( 13 )+CHR( 10 )
    SEEK npd
    IF FOUND()
       retval=retval+'Найдено!!!'+CHR( 13 )+CHR( 10 )
       FOR k= 1  TO kol
          retval = retval + mpdl.uch+';'+mpdl.npd+';'+mpdl.fm+';'+mpdl.im+';'+mpdl.ot+CHR( 13 )+CHR( 10 )
          IF !EOF()
             SKIP
          ELSE 
             EXIT
          ENDIF
       ENDFOR 
    ENDIF
    USE IN mpdl
    RETURN retval
ENDPROC

ENDDEFINE

Все равно не видит индекс. (хотя говорит что видит)
Что же делать?? Почему???
...
Рейтинг: 0 / 0
VFP COM server, с DBF файлами на сервере
    #35721187
1010100021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А все равно выбирает с первой записи:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Мне передали параметер npd -| 030000 |
Индекс - INDNPD
Нашлось!!!
-----;028610;йцуйцуйцу          ;НАТАЛЬЯ         ;йцуйцуйцу
-----;028612;уцуйуц й            ;йцуйцу           ;йцуйцуйцу
-----;028614;йцуйцуцйццц      ;СУССАНА        ;йцуйцуйцу
-----;028617;уууууууууйцу     ;йцуйцу           ;йцуйцуйцу

Вывод - неверно!
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP COM server, с DBF файлами на сервере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]