|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
||||||||||||||||
Передача параметра в запрос20.12.2011, 13:06. Показов 9593. Ответов 20
Метки нет (Все метки)
Доброго времени всем. Подскажите, пожалуйста. VFP 9.0, есть форма на ней Грид, беру значение из грида (предполагаю, что беру с первого столбца активной строки) и передаю параметром в другую
0
|
||||||||||||||||
| 20.12.2011, 13:06 | |
|
Ответы с готовыми решениями:
20
Передача параметра в запрос Передача параметра в запрос Передача параметра в запрос |
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|||||||||||||||
| 20.12.2011, 13:35 | |||||||||||||||
Если курсор должен создаваться на форме однажды, логичнее перенести его в Init() формы, если же в ходе работы он может быть перевыбран многократно, есть смысл вообще создать отдельный метод и вызывать уже его при необходимости. В свете вышесказанного код должен выглядеть так (предполагая, что тип полей числовой):
1
|
|||||||||||||||
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
|||
| 20.12.2011, 14:10 [ТС] | |||
|
Большое спасибо за столь широко раскрытый ответ. Я всего второй день над FoxPro и пока еще мало знаю его возможностей.
0
|
|||
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|
| 20.12.2011, 14:16 | |
|
0
|
|
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
|
| 20.12.2011, 14:23 [ТС] | |
|
Постараюсь. первое, что сейчас волнует, на форме есть кнопка при нажатии на которую открывается другая форма с гридом, раньше она открывалась нормально, сейчас выдает ошибку "Алиас не найден".
Я не поняла, что такого сделала, что теперь выдает ошибку. Не подскажите ли, пожалуйста, с чем это связано?! Рассказать как грид заполняю?! =)
0
|
|
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|
| 20.12.2011, 14:33 | |
|
Предположу, что к моменту инициализации грида не существует (или не открыт) его источник данных. Без кода и более подробной информации этот вопрос такой же бессмысленный, как и "Доктор, почему у меня что-то болит?".
Для начала изучите порядок событий в форме, например, здесь. Если грид настроен в конструкторе, т.е. ему заранее назначен RecordSource, а его колонкам ControlSource, то источник данных в Init() формы уже должен быть доступным. Это значит, что если источником данных является таблица - она должна быть заранее открыта в Load() формы, а еще лучше - при старте программы и не закрываться аж до завершения работы. Если это курсор - он должен быть создан до вызова формы или же в ее Load() и т.д. А вообще, откройте для себя отладчик, без него придется очень туго.
1
|
|
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
||
| 20.12.2011, 14:40 [ТС] | ||
|
я уже разобралась..просто ставила код разукрашивания строк , ну и он был источником ошибки..Спасибо за ссылку. Еще один вопрос остался, еще с предыдущего сообщения...Как я поняла, в FP не нужно отлавливать в каком месте грида находится курсор, так вот, ваши строки
0
|
||
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|
| 20.12.2011, 14:49 | |
|
Перемещение указателя в гриде означает перемещение указателя в таблице-источнике данных. Т.е. значение должно браться из текущей записи в этой таблице. Думаю, Вам стоит привести источник данных грида первой и второй форм, структуру таблиц и что собственно Вы хотите добиться?
0
|
|
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
|||||||||||
| 26.12.2011, 14:22 [ТС] | |||||||||||
|
Redglow, вы мне нужны на помощь, пожалуйста. Все руки не доходили до foxPro...Не подскажите ли вы, вот предположим, при создании формы и заполнении ее "начинкой" в Init я написала код, который есть выше, но повторюсь -
Глупо предположила, что выйдет так:
0
|
|||||||||||
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|
| 26.12.2011, 14:48 | |
|
1. Свойство Value предназначено для установки некоего значения контролу в текущий момент времени. Но, учитывая, что значения берутся из полей курсора и введенные значения должны быть помещены в него же, пользоваться Value нет никакого смысла. Для этих целей есть свойство ControlSource.
2. Учитывая, что курсор не является объектом, присвоить значение его полю как это делаете Вы в виде CursorName.FieldName = <SomeValue> нельзя. А если вспомнить, что курсор - это временная таблица, то и решение проблемы лежит на поверхности - REPLACE CursorName.FieldName WITH <SomeValue> или же воспользоваться UPDATE (если по каким-то причинам не подходит ControlSource). Учтите, что в Init() вашей формы в данный момент курсор создан только для чтения. 3. TABLEUPDATE() используется для буферизированных таблиц/курсоров. В приведенных отрывках кода я не вижу и намека на то, что упомянутый курсор буферизирован, а значит и применять TABLEUPDATE() бессмысленно. 4. Зачем Вы пересоздаёте курсор при сохранении? Почему не проверяете тип и значение Text0.Value? Сдаётся мне, Вы опять пишете код наугад, не особо понимая что делаете и зачем.
0
|
|
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
||||||||
| 27.12.2011, 10:17 [ТС] | ||||||||
|
Из того, что вы сказали я поняла, что можно записать изменения из textbox'ов в таблицу и напрямую?! Т.е. код будет выглядеть вида:
0
|
||||||||
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|||||||||||||||||||||
| 27.12.2011, 10:40 | |||||||||||||||||||||
|
Вы невнимательно прочли то, что я написал.
1. Повторяю, курсор - это временная таблица, соответственно она закроется только тогда, когда в явном виде будет указано USE IN <MyCursor> или в неявном виде это сделает сам фокс при завершении работы исполняемого файла, например. 2. Способ 1, он же самый правильный. Устанавливаете каждому текстбоксу в ControlSource соответствующее ему поле. Это можно сделать как конструкторе в design time, так и напрямую в Init() формы. Т.е.
Кстати говоря, в других языках программирования есть аналогичные свойства, которые ведут себя точно так же, разве что могут быть отличия в названии. 3. Способ 2, который тоже вполне имеющий право на жизнь. Добавляете форме свойство oRecord, например. В Init() формы будет
Это все расписано в хелпе с примерами и относится к азам. Почаще туда заглядывайте.
1
|
|||||||||||||||||||||
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
|
| 28.12.2011, 11:33 [ТС] | |
|
Естественно, у меня не получлось...поэтому решила сделать проще...с помощью Form_Wizard'а решила понасоздавать форм на основе таблиц, а там уже есть встроенные функции - добавления, удаления, редактирования...Но есть опять вопрос...простите за глупую датошность..надеюсь это последнее...Сейчас попробую скинуть файлы, что бы было понятно...все свое "добро" я запускаю через форму autoidentif.scx, вопрос в том,когда открывается форма table, то там есть грид, я уже поняла как при выборе строки в гриде открывать другую таблицу с данными этой записи, но вот как это делать при запуске формы, созданной Wizard'ом я не знаю...Помогите пож-та.
0
|
|
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|
| 29.12.2011, 10:41 | |
|
Уж извините, но у меня сейчас аврал с проектом, так что некогда даже толком поесть, не говоря уже о "посмотреть". Посмотрю после НГ, если выживу. )
Кстати, быть может у кого-то другого больше свободного времени и этот кто-то подскажет быстрее.
0
|
|
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
|
| 29.12.2011, 10:59 [ТС] | |
|
Redglow, думаю не надо после нового года..завтра без вооружения пойду сдаваться декану на зачет...спасибо вам за всё и простите)
0
|
|
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
||||||||||||
| 29.12.2011, 12:08 | ||||||||||||
|
Что конкретно не получается? Особой разницы между формой, созданной в конструкторе IDE, визардом или вообще, исключительно программным способом нет. Вы все правильно делаете, в Init() формы необходимо присвоить Grid1.RecordSource, только помимо этого еще нужно указать ControlSource для каждой колонки:
З.Ы.Ы. У вас тут еще и имена полей в разных таблицах разные. Сделайте тогда массив и в CASE заполняйте его именами полей, чтобы подставить эти значения в Column.ControlSource, иначе переменными километровая простыня кода получится.
1
|
||||||||||||
|
5 / 5 / 1
Регистрация: 12.08.2010
Сообщений: 151
|
|||||||||
| 29.12.2011, 12:35 [ТС] | |||||||||
|
Я для таблиц доделала позже, просто грамоздко..Вида такого -
Добавлено через 20 минут
0
|
|||||||||
|
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 44
|
|
| 30.10.2013, 00:34 | |
|
Здраствуйте, у меня та же ошибка, но ситуация попроще.
IF thisform.Label6.Caption<2 THEN thisform.Label7.Caption='Текст' ENDIF Ошибка во второй строке кода, помогите пожалуйста
0
|
|
|
187 / 180 / 29
Регистрация: 26.05.2011
Сообщений: 856
|
|
| 30.10.2013, 08:37 | |
|
thisform.Label7.Caption - какой тип?
0
|
|
|
107 / 107 / 0
Регистрация: 06.05.2011
Сообщений: 277
|
|
| 30.10.2013, 08:40 | |
|
1. контрол label нужен исключительно для того, чтобы выводить на форму текст, он не должен участвовать ни в каких операциях, процедурах, функциях
2. свойство caption - всегда текстового типа и оно не может быть числом. Вот скажите, "вася" больше 15835 или меньше? Даже если в caption содержится число в текстовом виде, нужно привести оба аргумента к одному типу - либо caption преобразовать в число, либо число в строку. Читайте хелп по функциям преобразования типов VAL(), STR(), TRANSFORM() и т.д.
1
|
|
| 30.10.2013, 08:40 | |
|
Помогаю со студенческими работами здесь
20
Передача параметра в запрос Access'a Передача параметра в запрос в com соединении Передача параметра в sql запрос Передача параметра в запрос из DTPicker
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|