powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сортировка в grid1
25 сообщений из 29, страница 1 из 2
Сортировка в grid1
    #38909294
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро, коллеги!

Требуется помощь в сортировке источника данных для grid1(*.dbf - 1-Alias).
Ниже приведен пример, в котором происходит сортировка.
Но(!), после завершения данные на экране пропадают и не возвращаются. )))
В принципе я понимаю почему они пропадают(USE jgnprf EXCLUSIVE), но решения не нашел.
Помогите пожалуйста.

А также хотелось бы услышать в правильном направлении ли я иду в решении этой задачи? Спасибо!

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
TRY 
	DROP TABLE tempFileSort 
CATCH TO oException
ENDTRY

SORT TO tempFileSort ON nskv/A, cel/A, data/A

DELETE FROM jgnprf
select jgnprf
USE jgnprf EXCLUSIVE
PACK

INSERT INTO jgnprf (nskv, cel, data, verh, niz, uch) ;
   SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort 
   
USE jgnprf

*ThisForm.grid1.RecordSource = "jgnprf"

ThisForm.Refresh
DOEVENTS
ThisForm.grid1.Refresh 
ThisForm.grid1.ActivateCell
ThisForm.grid1.SetFocus 
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909327
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причину правильно понимаешь. Грид превращается в белый квадрат если переоткрыть его источник данных. Чтобы этого не было:
Код: sql
1.
2.
3.
4.
ThisForm.grid1.RecordSource = ""
use in jgnprf
use jgnprf
ThisForm.grid1.RecordSource = "jgnprf"


только тут еще один момент есть: колонки выстроятся в том порядке, в котором они идут в jgnprf, а не в том каком были настроены.

Это изврат:
Код: sql
1.
2.
3.
4.
DELETE FROM jgnprf
select jgnprf
USE jgnprf EXCLUSIVE
PACK


это тоже
Код: sql
1.
SORT TO tempFileSort ON nskv/A, cel/A, data/A


забудь про SORT. Читай про индексы и select ... order by ...

Если это временная таблица, то используй курсор. Т.е. весь твой код будет таким
Код: sql
1.
2.
3.
4.
ThisForm.grid1.RecordSource = ""
SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort order by nskv, cel, data into cursor jgnprf readwrite
ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.Refresh()


чтобы грид изначально не появлялся белым квадратом из-за отсутствия курсора - создавай его в DE.BeforeOpenTables() или до вызова формы
Код: sql
1.
create cursor jgnprf (...)
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909333
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokНиже приведен пример, в котором происходит сортировка.
Главное я и не заметил :)

Если это курсор (или временная таблица монопольно открытая) то просто индексируешь:
Код: sql
1.
2.
3.
sele jgnprf
index on nskv, cel, data tag ncd
ThisForm.grid1.Refresh()


если нормальная таблица, то индекс должен быть создан заранее, просто его включаешь
Код: sql
1.
2.
set order to ncd in jgnprf
ThisForm.grid1.Refresh()
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909493
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"SQL представление позволяет вам извлекать данные из указанных полей в одной или более связанных таблиц в таблицу, которую можно обновлять."
CREATE SQL VIEW ...,
и REQUERY() заменит все.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909833
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че то не получается.
Вроде простая задача чет никак не соображу.
Разработчики конечно FoxPro поражают "простотой" реализации некоторых функционалов.
Вчера после глюка пропала центральная форма, мой труд последних двух недель. (( Благо основная логика была на хранимках, поэтому быстро восстановил. В жизни такой куйни не было у меня.
Еще раздражает рассказы коллег о том какой FoxPro классный и не заменимый.
Скорее всего из-за того, что я пока просто не освоил его. ))

Помогите пожалуйста, разобраться с этой хренью.
Повторяю, источник данных grid1(*.dbf - 1-Alias).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
ThisForm.grid1.RecordSource = ""
use in jgnprf
ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.RecordSource = ""

SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort;
order by nskv, cel, data into cursor jgnprf readwrite
ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.Refresh()

select jgnprf
index on nskv + cel TO ncd
ThisForm.grid1.Refresh()

*INDEX ON nskv + cel + data TO jgnprf
*USE jgnprf ORDER nskv


*Ordering by more columns is possible in the SORT command and in the ORDER BY clause of the SQL query.
*SET ORDER TO  requires one index tag so you have to create the index tag by expression from two columns, e.g.
*INDEX ON  type+STR(pkey, 10) TAG MyOrder  && type is character, pkey is numeric here
*and now you may use
*SET ORDER TO TAG MyOrder 
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909871
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokПовторяю, источник данных grid1(*.dbf - 1-Alias).


1-Alias - это понятно
а что значит *.dbf



ThisForm.grid1.RecordSource = ""
SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort order by nskv, cel, data into cursor jgnprf readwrite
ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.Refresh()
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909886
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jgnprf.DBF
таблица физически хранится так в Windows
А в Project Manager он находится в FreeTable с названием jgnprf.
Спасибо! Час попробую.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909924
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokСкорее всего из-за того, что я пока просто не освоил его. ))Очень на это похоже, особенно если судить по коду, в котором куча совершенно бессмысленных действий. Все, что вы написали заменяется таким кодом.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
ThisForm.grid1.RecordSource = ""

SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort;
order by nskv, cel, data into cursor jgnprf readwrite

index on nskv + cel TO ncd

ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.Refresh()
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909925
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokВроде простая задача чет никак не соображу.
Задача не простая. Грид штука своеобразная, есть у него особенности и их надо знать.


Чтобы заработало достаточно этого
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
ThisForm.grid1.RecordSource = "" && Это ставишь ДО закрытия источника данных
use in jgnprf
*ThisForm.grid1.RecordSource = "jgnprf" && нельзя, т.к. jgnprf закрыт

SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort;
order by nskv, cel, data into cursor jgnprf readwrite && здесь тоже переоткрывается jgnprf

ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.Refresh()



vadipokСкорее всего из-за того, что я пока просто не освоил его. ))
Ты б хоть книжку какую почитал по фоксу. В твоем коде куча идеологических ошибок из-за незнания основ.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909928
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Ругнулась, поэтому добавил CLOSE TABLES.
Не сортирует, и последние две строчки, которые добавил для теста исчезают, а при перезапуске заново появляются.
Смотрел по списку выше, в положенных местах их тоже нет.

Код: plaintext
1.
2.
3.
4.
5.
ThisForm.grid1.RecordSource = ""
CLOSE TABLES 
SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort order by nskv, cel, data into cursor jgnprf readwrite
ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.Refresh() 
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909932
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Ок, понял.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38909976
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чудеса, да и только!

Не работало, вернул как было, и вдруг заработало. ))

Код: plaintext
1.
2.
3.
4.
5.
ThisForm.grid1.RecordSource = ""
CLOSE TABLES 
SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort order by nskv, cel, data into cursor jgnprf readwrite
ThisForm.grid1.RecordSource = "jgnprf"
ThisForm.grid1.Refresh() 
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910116
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите за назойливость, но я действительно не врубаюсь.
1) Делаю сортировку, все ок.
2) Закрываю через обычный крестик на форме, потом запускаю программу за нова, и отображается все ок.
3) Дальше закрываю через свою кнопку закрыть, и все возвращается как было, то есть без сортировки.
Как такое может быть? Веть после сортировки я остановил программу и перезапустил все было ок, значит данные сбросились нормально в файл.
Машину перезагрузил, глюк как был так и остался.

код кнопки:
Код: c#
1.
2.
3.
4.
CLOSE TABLES
use jgnprf EXCLUSIVE
PACK
thisform.Release()
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910160
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok,

Насколько я понял у тебя еще и таблица есть jgnprf
И курсор ты называешь таким же именем, что в общем-то плохо.
Может, от этого у тебя и проблемы.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910204
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok

Извините за вопрос, у вас уже не первая экзотическая тема - вы этим интересуетесь из любознательности или вам нужно действительно решить какую проблему.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910233
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12vadipok

Извините за вопрос, у вас уже не первая экзотическая тема - вы этим интересуетесь из любознательности или вам нужно действительно решить какую проблему.

))) неа, есть реальная проблема.
В общем суть такая, есть программа написанная на досе еще в начале 90-х. (сейчас он перестал работать то ли из за виндовс7 то ли из за 32-64 бит)
Там оператор проделывает операции, то есть проверяет правописание(пост про красочные строки), добавляет строки и обязательно нужно отсортировать(этот пост).
Информация в основном по скважинам, таблица которую я выкладывал это перфорации(дырки в трубе jgnprf).
Дальше нужна карта, в которой можно поставить скважины.
Так что все мои 3 экзотических поста они реальные.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910252
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokВ общем суть такая, есть программа написанная на досе еще в начале 90-х. (сейчас он перестал работать то ли из за виндовс7 то ли из за 32-64 бит)
виндовс7x64 не запускает DOS-приложения. ИМХУ тебе быстрее будет эту проблему порешать чем прогу переделать с FPD.
Или ставь виндовс7x32 или поставь DOSbox и в нем запускай.

Тут по сути надо заново переписывать. Можешь переписать на фоксе, можешь на чем умеешь. Хочешь на фоксе - потрать освободившееся время на изучение фокса.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910261
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokПростите за назойливость, но я действительно не врубаюсь.
1) Делаю сортировку, все ок.
2) Закрываю через обычный крестик на форме, потом запускаю программу за нова, и отображается все ок.
3) Дальше закрываю через свою кнопку закрыть, и все возвращается как было, то есть без сортировки.
Как такое может быть? Веть после сортировки я остановил программу и перезапустил все было ок, значит данные сбросились нормально в файл.
Ты сбрасывал не в файл, а в курсор
Код: sql
1.
2.
SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort;
order by nskv, cel, data into cursor jgnprf readwrite


т.е. файл ты закрыл, а создал курсор (временная таблица в памяти), прогу закрыл - курсор удалился.
Если надо в dbf писать
Код: sql
1.
2.
SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort;
order by nskv, cel, data into dbf jgnprf


если она в какой-то подпапке
Код: sql
1.
2.
SELECT nskv, cel, data, verh, niz, uch FROM tempFileSort;
order by nskv, cel, data into dbf folder\jgnprf



Но лучше прислушайся к моему предыдущему посту, не издевайся над своими юзерами :)
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910349
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok

Понятно.
FPD и VFP9 это разные идеологии программирования и эти попытки перенести в лоб решения обречены на провал.

По карте - в VFP есть объекты, которые при уменьшении размеров превращаются в точку (Shape, Line ...), но вам нужно освоить работу с классами в необходимом объеме.
Ну и само собой - несколько функций из Winapi.
Про правописание можно из фокса обращаться к другим средствам (например в Word), сортировать лучше в Listbox (есть такой класс - Mover).
С таблицами вам надо сначала немного изучить работу с базами данных - подобные мучения лишены смысла, напрямую из FPD ничего не переводится.
Например, в данной задаче вместо избитого Grid.RecordSource = '' лучше использовать View.

Я уже советовал, повторюсь и вам:
Если же вам так уж необходимо по каким-то очень важным причинам изучать именно Фокспро, то осваивать его по форумным советам несерьезно.
Вам лучше скачать в интернете учебник: "С. А. Каратыгин, А. Ф. Тихонов, Л. Н. Тихонова - Visual FoxPro 7" или более ранние издания.
К книге прикладывется диск с примерами, где вы найдете все вам необходимое и с пояснениями.

Но все же замечу, что Фокс уже в прошлом, а это главное - скорее всего, вы напрасно потратите силы и время.
Я далеко не сторонник Visual Studio, но все же на сегодня это лучшее, что можно вам посоветовать.
В программном отношении ваша задача несложная, и, скорее всего, вы найдете готовые решения по частям.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910420
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем!

Вы абсолютно правы во всем.
У нас просто куча спецов по фоксу, в основном женщины за 40.
Удивительно, но факт.
Переучивать их не реально, так что я с нашим руководством согласен на все 100, по поводу выбора именно Фокса.
Рисование скважин это уже не моя проблема, ее перекинули другому человеку.
А моя задача, это маленький кусочек, в связи с отсутствием опыта.
Воот, примерно такой расклад.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910423
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tт.е. файл ты закрыл, а создал курсор (временная таблица в памяти), прогу закрыл - курсор удалился.
Если надо в dbf писать

В том то и дело, курсор не удаляется, когда закрываешь форму через стандартный крестик.
Посмотрите внимательнее мое сообщение.
Параллельно я читаю, книгу классную дали.

Ок, спасибо, завтра переделаю.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910427
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok

Одна из иллюзий из старых времен, что пожилых, да еще женщин, трудно переучить.
Эти времена уже прошли, картинки на мониторе делают свое дело.
Но вот оттягивание такого решения аукнется очень быстро, напряги с Фокспро будут только нарастать.
Просто нужна тактичность, стимуляция, тяжко только начинать.
По крайней мере, на 1С после фокса переучиваются на ура, даже скучно становится.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910470
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokВ том то и дело, курсор не удаляется, когда закрываешь форму через стандартный крестик.
Посмотрите внимательнее мое сообщение.
Мое сообщение внимательно посмотри. Мне понятно что происходит. Курсор это не твой DBF. В твоем коде DBF закрывается, одноименный курсор создается, изменения идут в курсор. Закрытие окна/проги убивает курсор, DBF остается такой какой была до первого срабатывания твоего кода.

Я тебе про курсоры писал как пример одного из подходов, а ты все в кучу смешал и удивляешься теперь мистике. Использовать одноименные курсоры и dbf`ы это дурной тон, уже писали выше, т.к. такие как у тебя непонятки возникают.

Тут нет мистики, есть твое непонимание того что происходит. Как в анекдоте: "Если программа выполняет мистические действия - значит вы написали что-то невероятно глупое".
Читай книжку внимательнее.
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910478
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять умудрились запутаться в форме с одним гридом.
Прям магия какая-то ...
...
Рейтинг: 0 / 0
Сортировка в grid1
    #38910601
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЗакрытие окна/проги убивает курсор, DBF остается такой какой была до первого срабатывания твоего кода.


Опишу последовательность еще раз.
1) Сортирую
2) Закрываю через стандартный крестик
3) Полностью закрываю ФоксПро
4) Открываю и запускаю проект. И вуаля, данные отсортированы.
Получается так, что курсор не удалился.
То есть прямая противоположенность тому, что вы написали.

Ошибку я понял, но мистика все равно есть!!!
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сортировка в grid1
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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