Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Спасибо, друг! |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
сам ты передал! |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
с курсором да, а вот privat не получается. Возможно , неправильно объект создаю.. |
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Таки про то вам и говорят - раз это отдельный класс и метод в нем - то ЧТО именно вы туда передаете в качестве параметров? Поскольку озвучивается "универсальный" метод - то не уверен что вы в него передаете параметры - и тогда да, могут проблемы с их видимостью. я себе когда делал (давно уже))) "псевдоуниверсальный" аналогичный класс в таком методе сразу поставил прием нескольких параметров
|
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Туда передается только строковая переменная, содержащая запрос и в нем уже всё-всё, и, если предполагается селект - имя курсора. И все. Если в моей переменной с запросом tcQuery стоит среди прочего ?lcParameter, а в методе класса : допустим отдельно передам искомую переменную в lcParam1, тогда в методе нужно будет дополнительно указывать: lcParameter = lcParam1 А нужен этот lcParameter только для этой формы и больше , например, нигде. Хотя это не точно, но в начале пути так Т.е. не красиво. И вот будет полтора десятка форм, и метод обрастет такой бородой, что вспоминать где чего откуда потребует дополнительной глюкозы. |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
может тогда отказаться от класса , пока не далеко еще ушел, а в родительскую форму методов напихать и жить с этим дальше?
|
Re: передать параметр | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Ну напиши вместо ?lcParameter --> ?lcParam1 ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Даже не знаю, что и сказать.. Только - спасибо! на поверхности же лежало, как же это я так затупил Ну зато столько вариантов и подходов изучено |
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Здесь вам видней как удобнее организовать ... как вариант передавать в такой метод кроме непосредственно строки запроса еще параметр-объект в котором уже задавать кол-во, имена и значения передаваемых параметров ... но тогда перед вызовом этого метода нужно будет этот объект готовить.
|
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
|
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Спасибо большое за примеры, очень помогает.
Я свой класс на вашем примере ваял. В данном конкретном случае, после откровения от PaulWist , оставлю все как есть, класс и в него параметры. Еще есть масса вопросов с проверкой соединения, SQLIDLEDISCONNECT() и все такое прочее. Но это я позже отдельную тему создам. |
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Ну, это не весь список возможностей - вместо множества переменных можно передавать объект или массив. Только вы понимаете, что имеете в виду под "доставать, называть и вычислять значение" по отношению к параметру. Параметр уже: 1) имеется без "доставания" 2) имеет имя без "называния" 3) имеет значение без "вычисления" И я вам написал, что потребуется изменить - только добавить параметр с именем lcParameter в команду PARAMETERS Неужели сложно проверить? Какое отношение имя команды и их количество имеет к вашей проблеме? Научитесь передавать параметры в одну - считайте, что научились передавать в любую. Возможно всё, что угодно. Но пока вы не покажете проблемный код, любые советы будут просто гаданием. Но мой прогноз - дело не в объекте, а по-прежнему в том, что вы отказываетесь разобраться с видимостью переменных. Поэтому напишите по памяти или спишите откуда-то, в каких программах/методах/процедурах/функциях относительно места определения (создания) будет видна PRIVATE переменная? Так вы просто используйте в команде SQLEXEC не lcParameter, а lcParam1. И то же - со всеми формами, использующими этот объект. |
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Только не принимайте класс что набросал выше как рабочий - это просто пример для визуализации сказанного. Как минимум в этом примере я бы еще отказался от макроподстановки имен параметров, а подменил бы их уже элементами свойства-массива - так и правильнее, и нет нужды разбирать типы переменных (кому ставить кавычки кому нет и т.п.) |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Специально справился у Клепинина, согласно ему переменные PRIVAT будут видны в программе, где их объявили, и в программах, вызванных из нее. мой код я по сути приводил, но еще более детально : Это код на начало всего разговора, так вот тут c PRIVATE не работает, вернее, дает запрос на ввод руками, как на картинке, которую я раньше выкладывал. Т.е. в вызванном из thisform.save() методе thisform.odbfb.oexec() переменная m.lcParameter не видна, хотя по определению выше должна была. При чем сразу непродолжительное время работало, и вдруг начало выдавать запросы на ввод руками, откуда и весь вопрос. С PUBLIC все работает. На самом деле проблемы уже нет, с общей помощью найдены несколько вариантов, а использован будет вариант с параметром, как в последнем предложении вашего поста. Исправлено 1 раз(а). Последнее : DmitryKn, 11.05.23 19:16 |
Re: передать параметр | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Не бросайте насовсем создание своих полууниверсальных классов - это основа вашего будущего "фреймворка"
У каждого даже любителя - он, энтот свой собственный фреймворк в той или иной форме есть! Исправлено 2 раз(а). Последнее : AndyNigmatec, 11.05.23 19:40 |
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
|
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Должен признать, что такая манера написания кода для меня очень, мягко скажем, не привычна. Я ведь не профессионал, я пользуюсь конструкторами. И я не смог найти того отличия, из-за которого у меня не работает так, как ожидается (. Если вы меня ткнете носом в него, я буду вам признателен за науку. |
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:По представленному здесь коду мне не удалось определить, в чем дело. Но если вы выложите файлы вашей формы и класса, то попробую понять, где та собака... |
Re: передать параметр | |
---|---|
DmitryKn Автор Сообщений: 300 Дата регистрации: 06.04.2022 |
Просто вырванные с мясом из проекта файлы как есть? Просто скопировать и выложить?
Исправлено 1 раз(а). Последнее : DmitryKn, 12.05.23 18:18 |
Re: передать параметр | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Да. Заархивируйте Form.scx, Form.sct и файл (файлы) класса, залейте архив куда-нибудь, если здесь прикрепить не получится, и опубликуйте ссылку. Можете всё это сделать не в теме, а через ЛС или мой email (есть в профиле). Исправлено 1 раз(а). Последнее : akvvohinc, 12.05.23 20:10 |
© 2000-2024 Fox Club  |