Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как отобразить Конкретную,предыдущую, следующую записи?  [new]
хелп
Guest
в комбобоксе выбирается запись, и нужно чтобы она и те которые рядом с ней(предыдущая и следующая отобразились)
как выбрать запись из комбобокс знаю, а вот чтобы еще и предыдущая и следующая вот вопрос..
5 мар 07, 20:54    [3866224]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
Юрий Куклачев
Guest
А зачем это?
Предлагаю не мучать комбо, а рядом с ним дорисовать два текстовых поля read-only, куда и выводить предыдущее и последующее значение.
5 мар 07, 22:09    [3866465]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
и как это вывести? мне всеравно, лишь бы выводило гденибудь предыдущую,следующую и конкретную запись из таблицы
5 мар 07, 23:26    [3866735]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
А в Grid отображать не пробовали?
6 мар 07, 00:20    [3866897]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
и как это там делать? просто запрос один не то сделал.. нужно переделывать
с грид не думаю что это то.. нужно из таблицы с помощью стандартных операций... а грид вроде не проходили :)
6 мар 07, 11:39    [3868425]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
Юрий Куклачев
Guest
Сорри, я думал не про записи, а про элементы списка.
Если надо отобразить несколько полей, а не только значение в ключевом поле, то лучше всего юзать грид. Навскидку я вижу два варианта - фильтр или обновляемый курсор.
Ну можно еще листбокс.
6 мар 07, 13:26    [3869454]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
а можно поконкретнее? как сделать такой запрос? а то завтра уже будут говорить что неправильно сделал, а тут покажу исправленный вариант :)
6 мар 07, 19:03    [3872073]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
никто незнает чтоли?

select fams
from stud
where fams=thisform.combo1.value

вот отображает конкретную запись.. а как сделать чтобы отобразилась еще следующая, предыдущая записи?
6 мар 07, 23:07    [3872684]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
А что Вы понимаете под термином следующая/предыдущая? Что определяет "порядок следования"?

В принципе, достаточно встать на найденную запись (SEEK, LOCATE). По SKIP окажетесь на "следующей", по SKIP -1 - на "предыдущей". Значения из этих записей напрямую присвойте TextBox.Value двух дополнительных объектов на форме. Затем ThisForm.Refresh() и все.
6 мар 07, 23:21    [3872706]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
Что такое следующая и предыдущая (физически, либо с установленным индексом)?
Если физически, по значению текущей записи взять prec=RECNO() или другой уникальный параметр
SELE * from table WHERE 1=-1 INTO CURSOR cur READ (копия структуры таблицы)
sele table
loca for (по параметру)
SKIP -1
SCATER TO memvar
sele cur
APPEND BLANK
gather from memvar
sele table
skip
и опять вставить
skip

вывести курсор в грид
Не писал о проверках на первую, последнюю записи, если не LOCA и других возможных ситуациях
6 мар 07, 23:28    [3872722]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
1
Guest
положил грид.. и сделал 2 кнопки чтобы вперед и назад записи прокручивать(скип). однако с конкретной проблемы.. вот положил еще одну кнопку и какимто образом нужно сделать так, чтобы в этом грид курсор установился на запись в котором значение некоторой строки равно выбранном в комбобоксе, пробовал loсate но там постоянно какието ошибки возникают
8 мар 07, 14:00    [3878309]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
ну так что? как сделать чтобы при выборе из комбо бокса записи, при нажатии кнопки в гриде курсор установился на запись соответсвующую?
10 мар 07, 23:23    [3883993]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
Прошу прощения, но какой вопрос такой ответ, какие-то ошибки возникают, может поимённо.
Без это не разобраться кот не прав, вопрошающий или сочиняющий ответ.
10 мар 07, 23:36    [3884006]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
а какая разница какая ошибка? яж прошу не ошибку исправить а написать так чтоб было без ошибки.
а ошибка такая возникает неизвесная команда, или неверный синтаксис или еще чтото, пишу например вот что:Look for thisform.grid1.value=thisform.combo1.value
11 мар 07, 16:49    [3884814]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
команда пишется LOCA не LOOC, не важно какая ошибка? Ведь сообщают неизвестная команда.
11 мар 07, 17:02    [3884830]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
написал
locate for thisform.grid1.Value=thisform.combo1.value
ошибок при запуске нет, однако при выполнении при нажатии на кнопку пишут:
operator/operand type mismatch
11 мар 07, 20:53    [3885114]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
thisform.grid1.Value - может указать и колонку в которой данные, а то что несоответствие типов данных, определите какие они у Вас.
Мое мнение, лучше запись искать не на гриде, а в курсоре или таблице, не будет путаницы в каком месте грида указанные данные : myTable.MyField= и короче и понятней. НО, это только моё мнение.
11 мар 07, 21:01    [3885123]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
как сделать с курсором то? вообще ничего не понимаю, можете всетаки написать эту 1 строчку чтобы работало ? :)

а тип данных в гриде и в комбо одинаковый был,- текстовый
12 мар 07, 00:46    [3885426]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
если Вы создали курсор, я уже показывал SELE * from ... into cursor myCursor readwrite
то работа с ним аналогична работе с таблицей
Работают: APPEND,LOCATE,REPLACE .. WITH ..., не очень понял какую строчку надо написать.
Повторюсь: создаёте курсор,как уже говорил заполняете 3-мя записями и показываете в гриде на форме, но и грид и кнопку и комбо надо рисовать и программировать.
12 мар 07, 18:59    [3889126]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
написал:
SELECT fams from student WHERE student.fams=thisform.combo1.value into cursor Cur;
locate grid1.fams FROM cur

выдает ошибку мол не так написанно, а команда read тоже выдает ошибки
12 мар 07, 21:52    [3889466]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
1. При таком построении курсора Вы получите только одну записть, я говорил о копии структуры таблицы в курсор и заполнении её записями.
2. Преже чем делать команду LOCATE в курсоре? необходимо сделать активной рабочую область с курсором : SELECT cur
12 мар 07, 22:04    [3889484]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
Цитата locate grid1.fams FROM cur

выдает ошибку мол не так написанно, а команда read тоже выдает ошибки

да, не так написано см/ подробнее Хелп ( locate for student.fams=' условие отбора')
12 мар 07, 22:11    [3889495]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
_
Guest
BMJ
1. При таком построении курсора Вы получите только одну записть, я говорил о копии структуры таблицы в курсор и заполнении её записями.
2. Преже чем делать команду LOCATE в курсоре? необходимо сделать активной рабочую область с курсором : SELECT cur


1) так в грид там есть много записей, причем так сократил высоту, чтобы было видно 3 записи
вот нужно чтобы курсор перемещался на запись которая совпадает с выбранным в комбо
2)
теперь такой код у кнопки?

SELECT fams from student WHERE student.fams=thisform.combo1.value into cursor Cur
select cur
LOCATE FOR thisform.grid1.fams=cur

но пишет что такое свойство не найдено..
12 мар 07, 23:23    [3889658]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
Вы путаете GRID.fam не данные в гриде, данные grid.column.value,
команда LOCA сработает если написать как у Вас, но не грид, а его источник данных table.fam и в правой части не просто cur (имя курсора), а указания поля в курсоре (напр. cur.fam).

НО!!! Я говорил об одном алгоритме, ВЫ пошли своим путем, поэтому мои ответы рассматривайте только в качестве ликбеза (ликвидация безграмотности) по написанию отдельных команд. Смешение подходов не даст правильного результата.
13 мар 07, 07:34    [3889968]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить Конкретную,предыдущую, следующую записи?  [new]
?
Guest
убрал грид, изменил код получилось:
SELECT fams from student WHERE student.fams=thisform.combo1.value into cursor Cur
SELECT fams,kg,semestr,do,no,nd,ocen FROM student
LOCATE FOR student.fams=cur.fams

поидее должно работать(сначала копируется значение из комбо в курсор, потом открываетсыя таблица и в этой таблице курсор должен установится там где фамилия совпадает со значением курсора, так понял..), но ничего не ставится курсор, хотя ошибок нет. просто открывается:SELECT fams,kg,semestr,do,no,nd,ocen FROM student и все
13 мар 07, 12:57    [3891675]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / FoxPro, Visual FoxPro Ответить