powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с поиском! ну пожалуйста:)
25 сообщений из 36, страница 1 из 2
Помогите с поиском! ну пожалуйста:)
    #37231280
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно прочитала все про поиск на форуме) Сделала в форме поиск по фамилии, результаты отображаются в Grid, как сделать, чтобы при двойном нажатии на результат поиска обновлялись данные в форме?
текст для поиска такой:

use in select('MyTempCursor')
local lcFam
lcFam=ALLTRIM(thisform.Text1.value)
select person_fam, person_im, person_ot, person_dr from dozl;
where rtrim(person_fam)==lcFam into cursor MyTempCursor

if _tally=0
=MESSAGEBOX("Записей не найдено!")
return
endif
with thisform.Grid1
.RecordSourceType=1
.RecordSource='MyTempCursor'
.refresh()

endwith

еще у меня форма может редактироваться только при нажатии Edit, как сделать чтобы в поле поиск можно было вводить всегда?
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231347
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну хоть ссылку дайте! не могу найти. все книжки уже перелистала
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231352
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы получить правильный ответ нужно задать внятный вопрос. Пока в вашем сообщении царит сумбур: что за форма, где двойное нажатие, что означает "нажатие на Edit" пока не понятно.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231385
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DagЧтобы получить правильный ответ нужно задать внятный вопрос. Пока в вашем сообщении царит сумбур: что за форма, где двойное нажатие, что означает "нажатие на Edit" пока не понятно.
так можно ведь и спросить, что конкретно не понятно. мне то кажется что все должно быть понятно. форма содержит поля типа Text1.....TextN, данные из таблицы Imena(Fields1,..., FieldsN соответственно). пользовалась конструктором, поэтому созданы по умолчанию кнопки Edit(редактирование), Save, Exit и т.п. Все устраивает, кроме поиска. Потому что он выводит значение одно, а у меня таких записей может быть десять. Для этого создала Грид, ищется фамилия, результаты заносятся в Грид . пользователь выбирает нужного человека, нажимает на строку в гриде, и обновляется форма с полями Text1.....TextN (т.е. выводит данные конкретно по этому человеку) из исходной таблицы. так понятнее?...
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231409
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123Сделала в форме поиск по фамилии,
результаты отображаются в Grid, - это на той же форме, где вводятся параметры поиска или на другой?
как сделать, чтобы при двойном нажатии на результат поиска обновлялись данные в форме?
- результат поиска у вас отображается в Gride, где нужно дважды нажимать и в какой форме должны обновиться данные?

еще у меня форма может редактироваться только при нажатии Edit, как сделать чтобы в поле поиск можно было вводить всегда? - при чем здесь Edit (редактирование) и поиск?

Видите сколько вопросов. И не мне одному непонятно, что же вы хотите. Постарайтесь изложить проблему более понятно, разбив на отдельные пункты непонятные вопросы.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231436
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGfox123Сделала в форме поиск по фамилии,
результаты отображаются в Grid, - это на той же форме, где вводятся параметры поиска или на другой?
как сделать, чтобы при двойном нажатии на результат поиска обновлялись данные в форме?
- результат поиска у вас отображается в Gride, где нужно дважды нажимать и в какой форме должны обновиться данные?

еще у меня форма может редактироваться только при нажатии Edit, как сделать чтобы в поле поиск можно было вводить всегда? - при чем здесь Edit (редактирование) и поиск?

Видите сколько вопросов. И не мне одному непонятно, что же вы хотите. Постарайтесь изложить проблему более понятно, разбив на отдельные пункты непонятные вопросы.
ок. собственно этого и хотелось - внимания к моей проблеме, а на вопросы с радостью отвечу, чтобы стало понятно:)
"это на той же форме, где вводятся параметры поиска или на другой?" - на этой же

"результат поиска у вас отображается в Gride, где нужно дважды нажимать и в какой форме должны обновиться данные?" - на нужную строку в гриде (ну например я ввела в поиске Иванов и мне выдало два результата Иванов Петр и Иванов Максим, мне нужен максим, я на него нажимаю (на всю строку.. или не знаю еще на че можно щелкнуть, это не важно)) и данные в этой же форме (ниже сетки) отображаются. Text1...TextN заполняются полями соответствующей записи из таблицы Imena

"еще у меня форма может редактироваться только при нажатии Edit, как сделать чтобы в поле поиск можно было вводить всегда? - при чем здесь Edit (редактирование) и поиск?"
до нажатия кнопки Edit или Add ни одно из полей не доступно для изменения, поэтому чтобы ввести данные для поиска необходимо нажать какую-нибудь из этих кнопок
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231443
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123,

В поле поиска вводите, например, Иванов.
Далее идет SELECT <все необходимые поля>
В Grid выводятся две записи: Иванов Андрей, Иванов Петр.
Привяжите Text1...TextN (ControlSource) к этому же курсору и при при выборе в Grid того или иного Иванова, в текстовых полях будет соответствующая информация.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231478
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123,

При выводе результатов поиска Text1...TextN сделайте ReadOnly = .T. , а при нажатии на кнопку "Edit" ReadOnly = .F., после редактирования опять .F.
Хотя, все громоздить в одной форме не очень-то и хорошо. По крайней мере, я бы редактирование записи сделал в отдельной форме с кнопками "Сохранить" и "Отмена". Ведь результатом поиска у Вас является курсор, а отредактированные записи нужно занести в реальную таблицу.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231489
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGfox123,

В поле поиска вводите, например, Иванов.
Далее идет SELECT <все необходимые поля>
В Grid выводятся две записи: Иванов Андрей, Иванов Петр.
Привяжите Text1...TextN (ControlSource) к этому же курсору и при при выборе в Grid того или иного Иванова, в текстовых полях будет соответствующая информация.

проблема с редактированием остается. вводить можно только после нажатия add или edit.
каким образом я выберу того или иного Иванова? просто выделением записи? может оно так и работает, не могу проверить, потому что не знаю как привязать к курсору Text1...TextN, они у меня к таблице привязаны... ну это правильно, логичнее было бы привязать к курсору. я так понимаю к событию клик кнопки ПОИСК нужно что-то дописать.. выложите пожалуйста пример строчки..
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231502
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGfox123,

При выводе результатов поиска Text1...TextN сделайте ReadOnly = .T. , а при нажатии на кнопку "Edit" ReadOnly = .F., после редактирования опять .F.
Хотя, все громоздить в одной форме не очень-то и хорошо. По крайней мере, я бы редактирование записи сделал в отдельной форме с кнопками "Сохранить" и "Отмена". Ведь результатом поиска у Вас является курсор, а отредактированные записи нужно занести в реальную таблицу.

поиск нужен как раз для редактирования! если находится запись - редактируем, нет записи - создаем новую... в одной форме делаю, потому что в старой проге пользователи привыкли все в одном окне делать... это желательно, но не обязательно. если я данные из курсора выводить в форму буду, то при редактировании, они в таблицу не сохранятся?.. надо чтобы сохранялись..
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231534
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123,



Ввели в поле поиска "Иванов"
SELECT fio, address, birthday, sex и что там еще у вас

Text1.ControlSource = "Cursor.fields"
Text1.ReadOnly = .T.
Text2.ControlSource = "Cursor.fields"
Text2.ReadOnly = .T.
Text3.ControlSource = "Cursor.fields"
Text3.ReadOnly = .T.
...
TextN.ControlSource = "Cursor.fields"
TextN.ReadOnly = .T.

В кнопке Edit и Add
Text1.ReadOnly = .F.
Text2.ReadOnly = .F.
Text3.ReadOnly = .F.
TextN.ReadOnly = .F.

Вопрос, как вы будете измененные данные заносить в реальную таблицу, т.к. значения в текстовых полях у вас их курсора. По логике д.б. еще и кнопка "Сохранить", которая может быть доступно только после нажатия кнопки Edit или Add. После сохраненияч данных делать ее опять недоступной.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231543
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите где взять какой-нибудь демо-проектик, чтобы посмотреть как все нормальные программисты делают, а то постоянно какие-нибудь глупые вопросы возникают, чтобы там коды подсмотреть) читаю в "Гурвиц Г.А. - Разработка реального приложения с использованием Visual FoxPro 9" но там большинство кодов по принципу - 3/4 часть кода мы написали, 1/4 догадайся сама..
в M Access насколько я помню в универе все изучали на демо-базе Борей, там все так хорошо было показано:)
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231553
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123,

Поищите у себя на диске в папке Visual Foxpro в Samples проект solution.pjx
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231555
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Визардами тут народ не шибко пользуется. Потому как там работает кнопка Edit лично я без понятия. Попробуйте в событии GotFocus
поля поиска прописать
Код: plaintext
1.
This.Enable=.t.
This.ReadOnly=.f.
Может поможет.
Действительно ли нужен двойной клик на гриде?
Вам проще создать новую кнопку "Обновить данные" с кодом в событии Click
Код: plaintext
1.
2.
3.
replace person_fam with MyTempCursor.person_fam, person_im with MyTempCursor.person_im, ;
person_ot with MyTempCursor.person_ot, person_dr with MyTempCursor.person_dr IN dozl
ThisForm.Refresh()
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231557
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGfox123,

Поищите у себя на диске в папке Visual Foxpro в Samples проект solution.pjx

Спасибо! пошла искать.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37231671
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123fox123,
Спасибо! пошла искать.
Вы, конечно, ищите (непонятно что), только в SELECT-SQL потом не забудьте и слово FROM <таблица>. В событии DoubleClick текстбокса грида можете вставить что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
z=this.value
Grid.RecordSource=''
use in MyCursor  && (MyCursor есть RecordSource для грида)
select * from MyTable where fio==z into cursor MyCursor
Grid.RecordSource='MyCursor'
Grid.refresh
Это без деталей, поскольку понадобится восстановление настроек отдельных колонок грида.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235004
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DagДействительно ли нужен двойной клик на гриде?
Вам проще создать новую кнопку "Обновить данные" с кодом в событии Click
Код: plaintext
1.
2.
3.
replace person_fam with MyTempCursor.person_fam, person_im with MyTempCursor.person_im, ;
person_ot with MyTempCursor.person_ot, person_dr with MyTempCursor.person_dr IN dozl
ThisForm.Refresh()

Идея канешно хороша и проста, только какие именно данные он будет брать из курсора, если результат поиска 10 фамилий?? если бы один результат был, не было бы вопроса..
а двойной клик, это к примеру. на старой проге так было. можно и один клик:)
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235006
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DagВизардами тут народ не шибко пользуется. Потому как там работает кнопка Edit лично я без понятия. Попробуйте в событии GotFocus
поля поиска прописать
Код: plaintext
1.
This.Enable=.t.
This.ReadOnly=.f.
Может поможет.
[/src]
поробовала. пишет property Enable и ReadOnly Not found
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235010
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rewarefox123fox123,
Спасибо! пошла искать.
Вы, конечно, ищите (непонятно что),
папку Solution
rewarefox123fox123,
Спасибо! пошла искать.
Вы, конечно, ищите (непонятно что), только в SELECT-SQL потом не забудьте и слово FROM <таблица>. В событии DoubleClick текстбокса грида можете вставить что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
z=this.value
Grid.RecordSource=''
use in MyCursor  && (MyCursor есть RecordSource для грида)
select * from MyTable where fio==z into cursor MyCursor
Grid.RecordSource='MyCursor'
Grid.refresh
Это без деталей, поскольку понадобится восстановление настроек отдельных колонок грида.

что значит "текстбокса грида"? вставила в событие DBLClick Grid1:
LPARAMETERS nRow, nCol
z=this.value
Grid.RecordSource=''
use in MyTempCursor && (MyCursor есть RecordSource для грида)
select person_fam from dozl where person_fam==z into cursor MyTempCursor
Grid.RecordSource='MyTempCursor'
Grid.refresh

никак не реагирует. наверно не туда вставила..
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235012
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGfox123,
Ввели в поле поиска "Иванов"
SELECT fio, address, birthday, sex и что там еще у вас

Text1.ControlSource = "Cursor.fields"
Text1.ReadOnly = .T.
Text2.ControlSource = "Cursor.fields"
Text2.ReadOnly = .T.
Text3.ControlSource = "Cursor.fields"
Text3.ReadOnly = .T.
...
TextN.ControlSource = "Cursor.fields"
TextN.ReadOnly = .T.


опять таки не понятно, как он будет выводить нужную запись ..
IgorNGfox123,
В кнопке Edit и Add
Text1.ReadOnly = .F.
Text2.ReadOnly = .F.
Text3.ReadOnly = .F.
TextN.ReadOnly = .F.

Вопрос, как вы будете измененные данные заносить в реальную таблицу, т.к. значения в текстовых полях у вас их курсора. По логике д.б. еще и кнопка "Сохранить", которая может быть доступно только после нажатия кнопки Edit или Add. После сохраненияч данных делать ее опять недоступной.
кнопка Save также имеется. без грида все работает и сохраняется в таблице
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235014
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос остается открытым. нужно, чтобы результаты поиска выводились в гриде и при выборе какой-либо записи, на экран в форме выводились данные по этому человеку но из таблицы, чтобы можно было редактировать и сохранять. как вариант, чтобы результы поиска выводились на другой открывающейся форме. хочется избавиться от грида в главной форме, потому что из-за него кнопки обработки (add, edit ...) работают с ошибками. в исходной таблице все записи проиндексированы по номеру записи. может с этим как-то связать? подойдут любые идеи с реализацией, главное чтобы работало как надо).
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235019
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123Честно прочитала все про поиск на форуме) Сделала в форме поиск по фамилии, результаты отображаются в Grid, как сделать, чтобы при двойном нажатии на результат поиска обновлялись данные в форме?
текст для поиска такой:
use in select('MyTempCursor')
local lcFam
lcFam=ALLTRIM(thisform.Text1.value)
select person_fam, person_im, person_ot, person_dr from dozl;
where rtrim(person_fam)==lcFam into cursor MyTempCursor
if _tally=0
=MESSAGEBOX("Записей не найдено!")
return
endif
with thisform.Grid1
.RecordSourceType=1
.RecordSource='MyTempCursor'
.refresh()
endwith
Еще у меня форма может редактироваться только при нажатии Edit, как сделать чтобы в поле поиск можно было вводить всегда?
Всё красиво, только где в SELECT-SQL слово FROM ? Откуда, собсно, выбираем ?
В событии DoubleClick текстбокса :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
local lcFam
lcFam=ALLTRIM(this.value)
select person_fam, person_im, person_ot, person_dr from dozl;
FROM MyTempCursor ;
where rtrim(person_fam)==lcFam into cursor MyTempCursor2
if _tally= 0 
 =MESSAGEBOX("Записей не найдено!")
 return
endif
with thisform.Grid1
 .RecordSourceType= 1 
 .RecordSource='MyTempCursor2'
 .refresh()
endwith
При создании курсора (до того) MyTempCursor не забывать про слово READWRITE.
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235031
fox123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rewarefox123Честно прочитала все про поиск на форуме) Сделала в форме поиск по фамилии, результаты отображаются в Grid, как сделать, чтобы при двойном нажатии на результат поиска обновлялись данные в форме?
текст для поиска такой:
use in select('MyTempCursor')
local lcFam
lcFam=ALLTRIM(thisform.Text1.value)
select person_fam, person_im, person_ot, person_dr from dozl;
where rtrim(person_fam)==lcFam into cursor MyTempCursor
if _tally=0
=MESSAGEBOX("Записей не найдено!")
return
endif
with thisform.Grid1
.RecordSourceType=1
.RecordSource='MyTempCursor'
.refresh()
endwith
Еще у меня форма может редактироваться только при нажатии Edit, как сделать чтобы в поле поиск можно было вводить всегда?
Всё красиво, только где в SELECT-SQL слово FROM ? Откуда, собсно, выбираем ?
В событии DoubleClick текстбокса :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
local lcFam
lcFam=ALLTRIM(this.value)
select person_fam, person_im, person_ot, person_dr from dozl;
FROM MyTempCursor ;
where rtrim(person_fam)==lcFam into cursor MyTempCursor2
if _tally= 0 
 =MESSAGEBOX("Записей не найдено!")
 return
endif
with thisform.Grid1
 .RecordSourceType= 1 
 .RecordSource='MyTempCursor2'
 .refresh()
endwith
При создании курсора (до того) MyTempCursor не забывать про слово READWRITE.

причем тут FROM MyTempCursor ? это был код для поиска из таблицы "from dozl"
"в событии DoubleClick текстбокса" какого текстбокса??
и вообще вся эта конструкция с FROM MyTempCursor даже компилица не хочет, я вас не понимаю......
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235160
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rewarefox123Честно прочитала все про поиск на форуме) Сделала в форме поиск по фамилии, результаты отображаются в Grid, как сделать, чтобы при двойном нажатии на результат поиска обновлялись данные в форме?
текст для поиска такой:
use in select('MyTempCursor')
local lcFam
lcFam=ALLTRIM(thisform.Text1.value)
select person_fam, person_im, person_ot, person_dr from dozl;
where rtrim(person_fam)==lcFam into cursor MyTempCursor
if _tally=0
=MESSAGEBOX("Записей не найдено!")
return
endif
with thisform.Grid1
.RecordSourceType=1
.RecordSource='MyTempCursor'
.refresh()
endwith
Еще у меня форма может редактироваться только при нажатии Edit, как сделать чтобы в поле поиск можно было вводить всегда?
Всё красиво, только где в SELECT-SQL слово FROM ? Откуда, собсно, выбираем ?
В событии DoubleClick текстбокса :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
local lcFam
lcFam=ALLTRIM(this.value)
select person_fam, person_im, person_ot, person_dr from dozl;
where rtrim(person_fam)==lcFam into cursor MyTempCursor2
if _tally= 0 
 =MESSAGEBOX("Записей не найдено!")
 return
endif
with thisform.Grid1
 .RecordSourceType= 1 
 .RecordSource='MyTempCursor2'
 .refresh()
endwith
При создании курсора (до того) MyTempCursor не забывать про слово READWRITE.

Вот так скомпилится
...
Рейтинг: 0 / 0
Помогите с поиском! ну пожалуйста:)
    #37235167
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox123rewareпропущено...

Вы, конечно, ищите (непонятно что),
папку Solution
rewareпропущено...

Вы, конечно, ищите (непонятно что), только в SELECT-SQL потом не забудьте и слово FROM <таблица>. В событии DoubleClick текстбокса грида можете вставить что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
z=this.value
Grid.RecordSource=''
use in MyCursor  && (MyCursor есть RecordSource для грида)
select * from MyTable where fio==z into cursor MyCursor
Grid.RecordSource='MyCursor'
Grid.refresh
Это без деталей, поскольку понадобится восстановление настроек отдельных колонок грида.

что значит "текстбокса грида"? вставила в событие DBLClick Grid1:
LPARAMETERS nRow, nCol
z=this.value
Grid.RecordSource=''
use in MyTempCursor && (MyCursor есть RecordSource для грида)
select person_fam from dozl where person_fam==z into cursor MyTempCursor
Grid.RecordSource='MyTempCursor'
Grid.refresh

никак не реагирует. наверно не туда вставила..

НУЖНАЯ запись - это текущая запись Grida, т.е. на которой стоит курсор. При перемещению по Gridу меняются значения в Text1...TextN
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с поиском! ну пожалуйста:)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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