powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запись результатов запроса в textbox's и их перелистывание
25 сообщений из 26, страница 1 из 2
Запись результатов запроса в textbox's и их перелистывание
    #35016146
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вопрос как и тема...
С помощью sql могу только результаты вывести в таблицу или курсор(ну в общем туда,куда предлагают стандартные средства).Как вывести данные в ту же форму которая в данный момент активна(она у меня одна form1,в её textbox'ы) и перелистывать то ,что он там нашёл?
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35016529
Вот именно в курсор и надо вывести и уже этот курсор "перелистывать".
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35017287
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом вся фишка!В эти же box'ы я кинуть могу,а вот перелистывать-нет.И ещё одно:когда запрос выполнен,первоначальную информацию я вернуть не могу.А если засовываю результаты в другие box'ы специально для этих целей помещённые на форму,то основные box и кнопки передистывания виснут на обдной записи,и как бы я не нажимал так всё на месте и остаётся.
Вот такой код на кнопке поиска:

SELECT Table1.name;
FROM ;
data1!table1;
WHERE UPPER(Table1.name) = UPPER((ALLTRIM(Thisform.Texer.value)));
ORDER BY Table1.name;
INTO CURSOR Qursor
thisform.tex.value=qursor.name
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35017303
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кнопки перелистывания у тебя кажется привязаны к таблице table1, естественно они перестанут работать.

Привяжи кнопки и текстбоксы к курсору сразу в дизайнере. И первую выборку в Inite формы дай такую

SELECT Table1.name;
FROM ;
data1!table1;
ORDER BY Table1.name;
INTO CURSOR Qursor
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35018791
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме у меня pageframe,на Page1 показываются данные table1,на page 2 данные таблицы table2.
Кнопки я стырил из галереи,и при нажатии записи перелистываются как для таблицы 1,так и для таблицы2.Из этого следует,что кнопки привязаны к 2-м таблицам...
Вопрос:как прописать для textbox'а сразу и показание значения table1 и курсора?Ну,и как привязать кнопки к курсору и основным тадлицам сразу?
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35018873
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это зачем делать???
Dag

И первую выборку в Inite формы дай такую

SELECT Table1.name;
FROM ;
data1!table1;
ORDER BY Table1.name;
INTO CURSOR Qursor
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35019017
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы разобраться с кодом кнопок из галереи надо очень долго и вдумчиво ковырятся в куче классов. Твои выводы, как минимум, сомнительны. Коды из галереи никак не рассчитаны на несколько таблиц. То, что произошло перемещение по нескольким таблицам - это следствие каких-то других настроек. Каких? Надо ковырять твой код.

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

То, что является источником данных для TextBox определяется значением свойства TetxBox.ControlSource. В данном случае, надо сделать настройку

Код: plaintext
TetxBox.ControlSource = "Qursor.name"

Если настройка делается в дизайнере формы, то кавычки не нужны.

Перемещение по записям готового курсора выполняется командой SKIP.

Код: plaintext
1.
2.
SKIP  1  IN Qursor  && следующая запись
SKIP - 1  IN Qursor  && предыдущая запись

Чтобы после перемещения по записям обновились картинки в TextBox надо дать вызвать метод для обновления

Код: plaintext
ThisForm.Refresh()
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35021751
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какое своиство отвечает за запись информации в textbox я знаю....(это про controlsource).
Так проблема в том,что у меня там уже стоят значения:Table1.name,Table1.Tel....
И как задать им сразу два значения?В событиях кнопки поиска?А если да,то как потом вернуться в обычный режим,который был до выборки?
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35021863
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для перелистывания table1 попробывал сделать такую кнопку.
IF !EOF()
SKIP 1 IN table1
endif
thisform.Refresh()
Так вот она работает для обоих page и для всех таблиц(table1 и table2),хотя как видите,задана только table1,ну т.е она одновременно перещёлкивает записи....странно,да???Может потому что таблицы связаны?Не знаю....
Какие сведения мне нужно предоствавить,чтобы все поняли почему так происходит?(в том числе и я)
А вопрос вот в чём:когда записи кончаются,остаются пустые боксы,как же сделать так,чтоб перелистывание просто упиралось в последнюю запись?
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35021872
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя я наверное догнал...Нужно делать эту кнопку не активной...
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35021878
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но опять же,как?Делал :
и thisform.pageframe1.page1.nexus.disabled,
и
thisform.pageframe1.page1.nexus.hide.
Не работает...
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35022340
авторthisform.pageframe1.page1.nexus.disabled
И где в фоксе было найдено свойство disabled? Может все таки enabled = .f. ?
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35023455
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Премите глубочайшие извенения...до этого занимался программированием на Delphi,и автоматом написал.На самом деле просто не знал как делается скрытие кнопки,ну я и попробовал пример оттуда.
Потом поразмыслил,и как осенило,в чем проблема!Конечно
thisform.pageframe1.page1.enabled=.f.(простите за орфографию)
А цель моего появления такова...Вот код кнопки "Следующая запись":

IF !EOF()
SKIP 1 IN table1
thisform.Refresh()
ELSE
thisform.pageframe1.page1.nexus.Enabled= .F.
endif

и код кнопки следующая запись в курсоре

IF !EOF()
SKIP 1 IN Qursor
thisform.Refresh()
ELSE
thisform.command1.Enabled= .F.
endif
Так вот почему,например,у меня в таблице1 4 записи,он их,конечно перелистывает,но как будто их пять и в строке состояния Table1:record5,и после перелистывания этой не существующей записи кнопка только исчезает.
Конечно можно подумать,что у меня в таблице есть пустые записи в таблице,но их там нет,я проверял.
Так вот и с курсором такая же проблема...типа он находит 2 записи,а перелистывает их как 3.
Может что не так в коде?
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35023474
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что ты конец файла проверяешь до SKIP
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF !EOF() 
SKIP  1  IN table1
endif

IF !EOF() 
thisform.Refresh()
ELSE
thisform.pageframe1.page1.nexus.Enabled= .F. 
endif
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35023519
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все так. Это особенность позиционирования указателя записи в таблицах.

Смысл в том, что каждая таблица как бы имеет на одну запись больше, чем у нее реально есть. Дополнительную фиктивную запись. Необходимость ее существования чисто техническая для решения ряда вопросов при адресации к записям.

Т.е. перемещаясь по команде SKIP Вы всегда сможете передвинуться на запись, следующую за последней записью. В этот момент функция EOF() вернет значение .T. - достигнут конец таблицы.

Эта фиктивная запись доступна только и исключительно на чтение (хотя команда Delete пройдет на ней без ошибок), а все ее поля имеют пустое (именно пустое, а не NULL) значение.

Собственно, по значению EOF("Qursor")=.T. и можно сделать вывод о том, что попали на эту фиктивную запись:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
IF EOF("Qursor") = .F.
	SKIP  1  IN Qursor
ENDIF

IF EOF("Qursor") = .F.
	thisform.Refresh()
ELSE 
	IF BOF("Qursor") = .F.
		SKIP - 1  IN Qursor
	ENDIF
	thisform.command1.Enabled= .F. 
ENDIF
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35023597
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ох,прямо даже не знаю как благодарить ВладимираМ!
Всегда б были такие ответы...с полным пояснением теории,да ещё подкреплёные практикой!
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35023631
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и в этой тебе остался только не разобранным вопрос:
Как нужно выходить из режима выборки?
Значит я выбрал,посмотрел,хочу вернуться туда,где были все записи....
Буду просто прыгать до потолка,если мне кто-нибудь с этим поможет...
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35024904
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если все данные у тебя так и остались лежать в таблице table1, тогда запусти выборку

SELECT Table1.name;
FROM ;
data1!table1;
ORDER BY Table1.name;
INTO CURSOR Qursor

Все данные перезальешь в курсор. Для этого она в Inite формы и дается.
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35044331
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня всего одна кнопка для поиска.И там уже есть запрос:

SELECT osnown.marka;
FROM ;
steelsdata!osnown;
WHERE UPPER(alltrim((Thisform.text1.value)))$UPPER(osnown.marka);
ORDER BY osnown.marka;
INTO CURSOR Qursor
thisform.text2.ControlSource ="qursor.marka"
Как я туда ещё один закину?
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35044483
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать привязаться к значению текстбокса- т.е. если он пуст-то по нажатию кнопку поиска отображать все данные, тет. в Click кнопки прописать что-то вроде.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
IF !EMPTY(Thisform.text1.value)

SELECT osnown.marka;
FROM ;
steelsdata!osnown;
WHERE UPPER(alltrim((Thisform.text1.value)))$UPPER(osnown.marka);
ORDER BY osnown.marka;
INTO CURSOR Qursor
*thisform.text2.ControlSource ="qursor.marka"
Thisform.Refresh()
ELSE

SELECT osnown.marka;
FROM ;
steelsdata!osnown;
ORDER BY osnown.marka;
INTO CURSOR Qursor
*thisform.text2.ControlSource ="qursor.marka"
Thisform.Refresh()
ENDIF
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35044498
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отлично!Молодчинка!Спасибо за помощь.
Блин,обидно,что сам не доехал...хотя был близок.Думал как объединить 2 запроса
SELECT osnown.marka;
FROM ;
steelsdata!osnown;
WHERE UPPER(alltrim((Thisform.text1.value)))#UPPER(osnown.marka);
OR alltrim((Thisform.text1.value))="";
ORDER BY osnown.marka;
INTO CURSOR Qur
thisform.text2.ControlSource ="qur.marka"


SELECT osnown.marka;
FROM ;
steelsdata!osnown;
WHERE UPPER(alltrim((Thisform.text1.value)))$UPPER(osnown.marka);
ORDER BY osnown.marka;
INTO CURSOR Qursor
thisform.text2.ControlSource ="qursor.marka"
и тут допустил пару провальных ошибок...где refresh'ы забыл,где чего...:-(((
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35044507
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя и тут есть свои недостатки...каждый раз очищать бокс и нажимать кнопку...как-то не удобно.
Да и ввод значений не подходящих под условие не продуман:допустим мы ввели какую нибудь
"xfgmlg" ,а он на это должен показать все записи,а не скрывать бокс...
Вот сижу,думаю как сделать.
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35044515
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал вот так,вроде работает...
IF EMPTY(Thisform.text1.value) OR UPPER(alltrim((Thisform.text1.value)))#UPPER(osnown.marka)

SELECT osnown.marka;
FROM ;
steelsdata!osnown;
ORDER BY osnown.marka;
INTO CURSOR Qursor
thisform.text2.ControlSource ="qursor.marka"
Thisform.Refresh()

ELSE

SELECT osnown.marka;
FROM ;
steelsdata!osnown;
WHERE UPPER(alltrim((Thisform.text1.value)))$UPPER(osnown.marka);
ORDER BY osnown.marka;
INTO CURSOR Qursor
thisform.text2.ControlSource ="qursor.marka"
Thisform.Refresh()
ENDIF
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35044522
lihach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наврал....не работает...
видать тестировал через ж...
...
Рейтинг: 0 / 0
Запись результатов запроса в textbox's и их перелистывание
    #35044687
прох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавляешь форме свойство, например, usl.

В text2 на interactivechange:
Код: plaintext
1.
thisform.usl = UPPER(ALLTRIM(this.text))
this.enabled = IIF(EMPTY(thisform.usl), .f., .t.)

Клик кнопки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
lcUsl = IIF(EMPTY(thisform.usl), '.t.', 'ATC(thisform.usl,UPPER(osnown.marka)#0)')

SELECT osnown.marka ;
FROM steelsdata!osnown ;
WHERE &lcUsl ;
ORDER BY osnown.marka;
INTO CURSOR Qursor

thisform.text2.ControlSource ='qursor.marka'
Thisform.Refresh()
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запись результатов запроса в textbox's и их перелистывание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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