Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
согласен, пробую еще варианты. thisform.cMyParam выглядит привлекательно, но не получается что-то. |
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
а что говорит - TYPE("m.lcParameter") ?
|
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
"C"
я при объявлении указывал но не буду глобальную переменную использовать. |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
у меня на форме объект
this.oDBFB = CREATEOBJECT('DBFB') dbfb - класс с методами thisform.odbfb.exec() - в нем вызывается SQLEXEC будет в этом методе видно свойство thisform.cparam ? |
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Должно быть видно - что мешает проверить например таким же способом через TYPE()
|
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Вместо истерик лучше сесть и разобраться, наконец, во всём, что касается областей видимости переменных и прочих объектов. Потому что нельзя написать ничего надежно работающего, если возникают такие вопросы: Цитата: Я например, так и не понял, описана ли у вас переменная m.lcParameter, и если описана, то как. А ведь если проблема в том, что в методе Sqlexec она не существует, то именно в этом направлении и надо копать. Второе - вместо простого копирования реального кода ваших программ, вы выкладываете здесь "непонятно что" - то у вас переменные написаны то так, то сяк, то на скрине одно, а в теме - другое. К чему эти шпионские игры, которые только всё запутывают? Третье - вместо того, чтобы просто воспользоваться дебаггером самому, вы приводите фрагменты "нереального" кода, чередуя их с художественной литературой: Цитата:С той же целью и с равным успехом вы могли бы попробовать добавить в команду абзац из "Войны и мира", или предварительно подержать компьютер часок в холодильнике. И так будет всегда, пока вы, наконец, не поймёте, что прежде, чем решать дифуры, надо выучить таблицу умножения. PS Ладно, не сдержался, прошу прощения. Видимо, вы просто не мой "клиент" - оставляю вас тем, у кого нервы крепче. Исправлено 1 раз(а). Последнее : akvvohinc, 10.05.23 16:30 |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
не-не-не, раз не сдержался, теперь обязан! Исправлено 1 раз(а). Последнее : DmitryKn, 10.05.23 18:22 |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Похоже разобрался.
Если объявлять переменную PUBLIC то работает. Но глобальные переменные не идеальный вариант. Если добавить пустое поле в курсор - тоже работает, но и этот вариант не эстетичен. Передать через свойство формы:
И, когда я пробовал пихать в lcQuery ?thisform.odbfb.cparam , метод в классе его не видел. И вот с трудом догадался поставить ?this.cparam , получается, это в методе формы, но свойство класса, он его там читает. Такое получилось решение. И спасибо вам всем, в том числе за критику. Исправлено 4 раз(а). Последнее : DmitryKn, 10.05.23 20:20 |
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Я предлагал вам передавать эту переменную в метод как параметр: Цитата:Но можно было бы и описать её как PRIVATE. |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Да, но тогда пришлось бы в классе с ней отдельно работать, и в нем теряется смысл, класс этот как универсальный для, назовем это так, проекта задумывался, что бы можно его было использовать не меняя кода методов со всеми остальными формами. Как PRIVAT попробую. |
Re: передать параметр | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Придмать "универсальность" - часто (у меня) заканчивалась "раздумиями" над структурой, над разделением задачи на несвязанные части, "философией" деления программы на "подпрограммы".
|
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Опять пошли непонятки, вызванные понятно чем. Я не понимаю, что изменится в вашем универсальном классе, если переменная будет не наследоваться, а передаваться как параметр. Поясните, что конкретно и где вам придется изменить, если помимо m.lcQuery метод будет принимать и m.lcParameter. Почему при этом вам пришлось бы с lcParameter "отдельно работать"? Почему при этом класс потеряет "универсальность"? --------- А теперь я напишу, как у вас устроен метод Sqlexec() 1) Внутри метода выполняется команда SQLEXEC, требующая наличия переменной lcParameter. 2) Эта переменная может быть: ___ - создана в самом методе; ___ - передана в метод как параметр; ___ - создана где-то выше в стеке вызовов как PUBLIC или PRIVATE. Во всех трех вариантах команда SQLEXEC будет выполнена одинаково при одинаковом значении переменной lcParameter. Ничего принципиального в методе Sqlexec() править не придется. В варианте "передана в метод как параметр" вам всего лишь придется дописать ещё один параметр в начало метода : LPARAMETERS tcQuery, tcCursor, lcParameter Если же под универсальностью вы понимаете то, что количество таких параметров может быть более одного, то ничего не меняется: - либо вы обеспечиваете видимость всех этих переменных-параметров в методе Sqlexec(), описывая их перед вызовом как PRIVATE. - либо передаете/принимаете всё количество параметров, рассчитывая на максимально возможное их число (и помня, что общее количество передаваемых аргументов не может быть больше 27) LPARAMETERS tcQuery, tcCursor, lcParameter, lcParameter2, lcParameter3 ... Исправлено 6 раз(а). Последнее : akvvohinc, 11.05.23 00:45 |
Re: передать параметр | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> если переменная будет не наследоваться, а передаваться как параметр.
параметры мы умеем пердавать Что за "переменная" возбожная как "наследуется" ? Наследование - это у нас как "копирование образца класса" (ну, плмс ИНИТ-метод, которые может.. и галлактикуразрушить),. Но значения - наследовать - в фоксе невозможно, клонирование обьекта фокс-разрабы не сделали. Исправлено 1 раз(а). Последнее : of63, 11.05.23 00:59 |
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Я использовал здесь слово "наследуется" не в буквальном смысле.
Если ты читал тему, то поймешь, что имелась в виду переменная, созданная где-то выше в стеке вызовов и которая "видна" в вызванном методе. |
Re: передать параметр | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
"В стеке вызывов" (НУ, В СТЕКЕGTHTVTYYS[? НПБЛЮДАЕМЫХ ИЗ ПОДПРОгРАММЫ ФОКСА ), О йЕ!
СЕРЕГА! апаратная, техническая (транзисторная) часть - это основа этой манишерии Исправлено 2 раз(а). Последнее : of63, 11.05.23 01:15 |
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Вот код, который, на мой взгляд, аналогичен тому, что вы делаете. И он работает независимо от того, с помощью какой ссылки внутри метода - thisform, this или даже this.parent вы работаете со свойством класса. Исправлено 1 раз(а). Последнее : akvvohinc, 11.05.23 02:17 |
Re: передать параметр | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
() Серега, не связывайся
ДмКныр параметер передал, надеюсь... Исправлено 1 раз(а). Последнее : of63, 11.05.23 03:27 |
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Разберется, там с головой все в порядке )))
|
Re: передать параметр | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
Как я понимаю, тут основная проблема в том, что строка с "?" формируется в одном методе, а выполнение sqlexec происходит в другом методе, ТС видимо хочет (и я его понимаю), создать универсальный метод выполнения sqlexec независимо от количество параметров, что бы в методе выполнения были видны "?переменнЫЕ".
Тут, либо private переменные, либо использовать/создавать курсор, в который класть значения, тогда проблем с областью видимости не будет. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Идея была в том, что вот, я сделал класс, и в нем, например, метод oexec, который отправляет запрос серверу :
Предполагалось, что это будет в таком виде для всех вообще запросов: select, update, insert ... переменная tcQuery содержит в себе этот запрос в виде строки и подготавливается в соответствующих методах разных форм из необходимости. Если передавать параметр отдельно , то его нужно как-то внутри доставать и называть, что бы в запросе вычислялось его значение перед отправкой на сервер. А нужно это только в одном случае, только с конкретной текущей формой, а в остальных не нужно, это я имел в виду, когда говорил об универсальности. Можно было в классе формы нарезать свойств и методов и вообще таким классом не пользоваться, ну так вышло вот таким путем пошел. Но возможно, я как-то неправильно объект создаю, все говорят про приват переменную, а у меня никак. Создаю так: есть класс DBFB, на форме добавлено свойство odbfb в load формы:
|
© 2000-2024 Fox Club  |