Форум
Написать нам
Страница 2 из 3«123»
Модератор форума: Peter 
Форум MMB » Всё о программе Neo Book » Вопросы и ответы по NB » Вопрос про переменные (Переменные в Neobook)
Вопрос про переменные
BodiДата: Пятница, 28 Август 2009, 16:19 | Сообщение # 31
Ветеран форума
Группа: Проверенные
Сообщений: 545
Репутация: 7
Награды: 1
Статус: Offline
Quote (mishem)
Ошибаетесь, этот пример просто просмотрщик файлов базы данных.

Ну я даже и не знаю чем вам тогда помочь :( Как время будет попробую поизучать плагин, мож тогда что ясно станет...
 
mishemДата: Пятница, 28 Август 2009, 16:42 | Сообщение # 32
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Да сдесь больше не в плагине, а в самой переменной загвоздка. А как решить ее, не пойму. Как назначить команду таблице? :( Если она открывается в Rectangle, а у него нет возможности назначить команду :(

Я люблю думать что умею рисовать
 
СергейДата: Пятница, 28 Август 2009, 17:10 | Сообщение # 33
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
mishem, не могли бы сделать простенький пример, просто я никогда не работал в НБ с БД, пример любой, но только именно с той проблемой, поковыряюсь может что нарою :)

 
Alex3AДата: Пятница, 28 Август 2009, 17:17 | Сообщение # 34
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
Что такое сложная переменная? Или это твое собственное толкование?
Это что просто длинное имя, объект, структура, а может ссылка на что то?
Потом, каждое поле в базе имеет свой тип данных и максимальный размер, которые определяються при создании таблицы. Если это формат дбф, то каждый файл содержит
одну таблицу. В адо одбс имеется понятие алиас, вот через эту х..ню, и возможно
логическое восприятие как одной базы с несколькими таблицами, если ты работаеш не
с дбф а с мелкософтовым форматом, то там действительно в одном файле куча таблиц.
Quote (mishem)
А как воплотить эту команду когда я щелкаю по полям таблицы?

Обычно, у объектов имеються свойства и события, клик, даблклик, стартедит, ендедит, в этих обработчиках и вставляються значения в таблицу - свойство целлс. Но вставить текст в таблицу не равносильно заниесению этих данных в базу.
Соответственно, ты должен занести данные в базу и прочитать их заново в таблицу,
или записать в таблицу и сохранить в базе. То есть тут подразумевается выполнение
двух разных операций, но привязанных к одному событию - изменению данных.
Что бы ячейка таблицы вела себя как поле ввода, необходимо назначить ей текст контроль,то есть указать в соответствующем свойстве имя елемента эдит.
Смотри в примерах использующих таблицы.
В прочем о таких тонкостях лучше спроси тех кто работал стаблицами в нб.

Добавлено (28 Август 2009, 17:17)
---------------------------------------------

Quote (mishem)
Если она открывается в Rectangle

Что бы не морочить себе помидоры, сначала попробуй втавлять\менять данные
из простого поля ввода.
 
mishemДата: Пятница, 28 Август 2009, 18:19 | Сообщение # 35
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Alex3A)
Что бы не морочить себе помидоры, сначала попробуй втавлять\менять данные
из простого поля ввода.

Это я и делаю :D
Quote (Alex3A)
Что такое сложная переменная? Или это твое собственное толкование?

Толкование мое, а мож прочитал где, не помню. Утверждать не хочу.
Пример.
Сложная переменная [[File_Name].[Prodavec].Kolvo]
Alex3A, Выше я старался объяснить, что не получается.

Добавлено (28 Август 2009, 18:19)
---------------------------------------------
sp3d,

Quote (sp3d)
mishem, не могли бы сделать простенький пример,

Хотел на скорую руку сделать, не успеваю, ехать надо. На следующей неделе приеду, мож тогда.
Quote (sp3d)
просто я никогда не работал в НБ с БД

А Вы попробуйте, :) просто вместо ID базы и имени таблицы вставьте переменные.

Я люблю думать что умею рисовать
 
СергейДата: Пятница, 28 Август 2009, 19:40 | Сообщение # 36
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
Quote (mishem)
А Вы попробуйте
да у меня не получается создать БД-файл, я работал только с мускулами, но там через сервер, как создать локальную БД-файл незнаю, ладно подождем приезда

Добавлено (28 Август 2009, 19:40)
---------------------------------------------
для чего нужен ReportDesigner.exe?!


 
mishemДата: Пятница, 28 Август 2009, 19:48 | Сообщение # 37
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (sp3d)
для чего нужен ReportDesigner.exe

Не обращай внимания на него, это я тоже для себя на русский его переводил.

Я люблю думать что умею рисовать
 
СергейДата: Пятница, 28 Август 2009, 20:14 | Сообщение # 38
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
Quote (mishem)
Не обращай внимания на него, это я тоже для себя на русский его переводил.
а что он делает?!

 
Alex3AДата: Пятница, 28 Август 2009, 22:37 | Сообщение # 39
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
Quote (sp3d)
для чего нужен ReportDesigner.exe?!

Судя по названию, генератор форм отчетов, весьма распространенная и нужная
штука, позволяющая самому определять форму отчета. Ну конечно применяется исключительно для дела, для баловства интереса не представляет.
Quote (mishem)
Сложная переменная [[File_Name].[Prodavec].Kolvo]
Alex3A, Выше я старался объяснить, что не получается.

Судя по всему запись, рекорд, с синтаксисом нб я не знаком, выведи ее в лабел,
это может быть или ссылка на элемент структуры записи, очевидно количество,
или сложение трех текстовых переменных, имени файла+имя поля+количество.
Если это структура, то принимающая функция должна знать ее формат, тоесть она должна быть описана в плагине, толкать туда че тебе вздумается нельзя, таким образом передается ссылка на что то, то есть грубо говоря адрес. И принимающей стороне надо знать как устроено то что ты ей пихаеш, тогда она знает что первый элемент это то то, следующий начинается там то и так далее.
У каждой функции\процедуры есть определенный перечень аргументов с которыми она
работает, если ты ей сунеш не то что она от тебя ожидает, в лучшем случе она
тебя проигнорирует. В общем то это является елементарными понятиями, которые надо просто изучить, а уж затем что то делать. Судя по названиям, это все таки структура, ибо в ином случае, строка, носит безсмысленный характер, строку
типа моябаза.дбфпродавец120 хрен кто поймет.
Было бы понятнее если бы ты приводил не только свою "сложную" переменную, но и функцию в которой ты ее используеш.
В таких вещах имеют значения всякие скобочки, именно они указывают на то что ты даеш.
 
СергейДата: Четверг, 11 Март 2010, 11:55 | Сообщение # 40
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
Запылилась тема :)
Работаю с БД, действительно есть такая досада, что "многослойные" переменые вида [[ПеРеМ1].[ПеРеМ2].пЕрЕм3] не работают в НБ на вывод этой переменной например в обекте Text или TextEntry.
Эта переменная появляется в результате конекта с БД и обработки запроса на вывод значения ячейки в таблице и имеет вид как писал выше mishem, [[имя БД].[имя таблицы].ячейка таблицы]
Доступно только для пользователейТут(1.5 МБ) находится исходник и экзешник, в Прикреплении исходник, т.с. для наглядности
Доступно только для пользователейИспользоватся плагин NeoBookDBPro!
mishem, сабж то решил?
Прикрепления: bd1.rar(3Kb)




Сообщение отредактировал Сергей - Четверг, 11 Март 2010, 12:01
 
DEMBELДата: Четверг, 11 Март 2010, 15:45 | Сообщение # 41
Наш дизайнер
Группа: Модераторы
Сообщений: 2314
Репутация: 25
Награды: 12
Статус: Offline
Quote (Сергей)
не работают в НБ на вывод этой переменной например в обекте Text или TextEntry.

ну да, такие переменные в этих обьектах не воспринимаются, мало того, вроде как не воспринимаются даже переменные массива типа [Var[x]]. Приходится присваивать такие переменные в обычную переменную setvar "[Text]" "[Var[x]]" и показывать уже [Text].
 
СергейДата: Четверг, 11 Март 2010, 16:47 | Сообщение # 42
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
Quote (Сергей)
TextEntry
ну фиг с этим объектом, но такая переменая не выводится в Text, т.е. пока обрабатывается в подпрограмме, то НБ есно понимает такую переменую, стоит ее вывести, то нифига :( Нашел пока один выход выводить через SetObjectCaption, но код раздувается

Добавлено (11 Март 2010, 16:47)
---------------------------------------------
тут еще одна напасть, запустил скомпилированый проект на другом компе и при открытии и закрытии проги вылетает эта месага:

как с ней боротся, у меня на машине ничего не вылетает
Прикрепления: 4997805.jpg(19Kb)




Сообщение отредактировал Сергей - Четверг, 11 Март 2010, 16:58
 
DEMBELДата: Четверг, 11 Март 2010, 16:59 | Сообщение # 43
Наш дизайнер
Группа: Модераторы
Сообщений: 2314
Репутация: 25
Награды: 12
Статус: Offline
Quote (Сергей)
как с ней боротся

ну видимо плагин зарегистрировать. ктото уже спрашивал про это в соотв. теме, вроде говорили что в реестр надо чтото записать на др. машине

Добавлено (11 Март 2010, 16:59)
---------------------------------------------

Quote (Сергей)
стоит ее вывести, то нифига

перед выводом присвой ее в другую обычную переменную, что не получается так как я написал выше?
 
СергейДата: Четверг, 11 Март 2010, 17:09 | Сообщение # 44
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
Quote (DEMBEL)
ну видимо плагин зарегистрировать. ктото уже спрашивал про это в соотв. теме, вроде говорили что в реестр надо чтото записать на др. машине
ну это я так и понял, непонятно нахрена автор плагина такое замутил?!
А если кто то купит и захочет сделать комерческую версию, тогда все машины этими записями %)

Добавлено (11 Март 2010, 17:02)
---------------------------------------------

Quote (DEMBEL)
что не получается так как я написал выше

конечно получается, но мне желательно именно в такой - как оно есть. А то с этой констукцией ростет сам код, а его в проекте дофика уже и так...

Добавлено (11 Март 2010, 17:09)
---------------------------------------------
и еще такой вопрос, например я использую в проекте БД Access, а на машине где запускаю проект не установлен этот самый Access, проект не будет работать?!




Сообщение отредактировал Сергей - Четверг, 11 Март 2010, 17:02
 
DEMBELДата: Четверг, 11 Март 2010, 17:19 | Сообщение # 45
Наш дизайнер
Группа: Модераторы
Сообщений: 2314
Репутация: 25
Награды: 12
Статус: Offline
Quote (Сергей)
проект не будет работать

эмм... тут не столько от наличия Access зависит... если используешь плаг DBPro, то он вроде должен сам предоставлять механизм доступа к .mdb базе, посмотри в справке к плагу (напр. плаг NeoAccess требует предустановленного интерфейса доступа, ну или хотя бы того же MS Access), ну и проверь лично, на всякий случай...
 
PeterДата: Четверг, 11 Март 2010, 17:20 | Сообщение # 46
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (Сергей)
ну это я так и понял, непонятно нахрена автор плагина такое замутил?!
А если кто то купит и захочет сделать комерческую версию, тогда все машины этими записями

Автор плагина (сама NeoSoft) ничего не замутил!
Тут все сделано как обычно, т.е. как и положено.
Вообще очень странно, что приходится, уже в который раз, опять возвращаться к этой теме с NeoBookDBPro.
Самое первое упоминание о регистрации плагина здесь. Остальные сообщения можно найти на форуме, но уже из вышеуказанного будет ясно "что и почем".
Quote (Сергей)
проект не будет работать?!

По идее, связи с Access нет никакой.
Нужно просто попробовать...

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
DEMBELДата: Четверг, 11 Март 2010, 17:21 | Сообщение # 47
Наш дизайнер
Группа: Модераторы
Сообщений: 2314
Репутация: 25
Награды: 12
Статус: Offline
Quote (Сергей)
с этой констукцией ростет сам код, а его в проекте дофика уже и так...

пока вижу это единственный выход, подумай как можно оптимизировать этот процесс
 
СергейДата: Четверг, 11 Март 2010, 17:22 | Сообщение # 48
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
Quote (DEMBEL)
проверь лично, на всякий случай
не где, надо узнать у кого не стоит этот самый аццесс

 
DEMBELДата: Четверг, 11 Март 2010, 17:24 | Сообщение # 49
Наш дизайнер
Группа: Модераторы
Сообщений: 2314
Репутация: 25
Награды: 12
Статус: Offline
Quote (Сергей)
не где, надо узнать у кого не стоит этот самый аццесс

точнее, надо узнать у кого вообще не стоит MS Office в данном случае
 
СергейДата: Четверг, 11 Март 2010, 17:24 | Сообщение # 50
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
интересно, а какой тогда надо выбрать формат бд, чтоб 100% везде работал, если использовать плагин NeoBookDB

 
PeterДата: Четверг, 11 Март 2010, 17:26 | Сообщение # 51
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (Сергей)
если использовать плагин NeoBookDB

dbf. Другие форматы этот плагин не воспринимает.
Иначе нужен плагин NeoBookDPPro.

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
mishemДата: Четверг, 11 Март 2010, 19:04 | Сообщение # 52
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Quote (Сергей)
тут еще одна напасть, запустил скомпилированый проект на другом компе и при открытии и закрытии проги вылетает эта месага:

Я решил эту проблему у себя путем добавления ключа в реестр при установке программы. Если добавлять при первом запуске, то сначала все равно будет выскакивать такое окно.
Quote (Сергей)
интересно, а какой тогда надо выбрать формат бд, чтоб 100% везде работал, если использовать плагин NeoBookDB

Так он по моему только с DBF работает. Или я ошибаюсь? Проверить просто пока не могу. Винду только переустановил. :(

Я люблю думать что умею рисовать
 
СергейДата: Четверг, 11 Март 2010, 19:34 | Сообщение # 53
Необукер
Группа: Проверенные
Сообщений: 2236
Репутация: 23
Награды: 12
Статус: Offline
Quote (Сергей)
на машине где запускаю проект не установлен этот самый Access, проект не будет работать?!
Ответ: Будет! При условии что установлена Windows98 и выше

Добавлено (11 Март 2010, 19:34)
---------------------------------------------
А на главный вопрос ответ нет, Нб почемуто не понимает такую переменную, что очень жаль :(


 
mishemДата: Четверг, 11 Март 2010, 20:45 | Сообщение # 54
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
Сергей, я уже не помню по какому пути пошел. Но пока к этому вопросу не возвращался.

Я люблю думать что умею рисовать
 
PeterДата: Четверг, 11 Март 2010, 22:54 | Сообщение # 55
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Quote (mishem)
А на главный вопрос ответ нет, Нб почемуто не понимает такую переменную, что очень жаль

NB все воспринимает, просто следует учитывать то, что текстовой объект отображает содержимое по имени переменной, которое в случае применения конструкции типа [Var[x]], будет постоянно меняться.
Составные имена переменных можно исползовать для расчетов, но не для вывода конечной информации, что и происходит в текстовом объекте.
Попробуйте применить к текстовому объекту команду RefreshObject.
Собственно, вариант SetVar "[Text]" "[Var[x]]" ничуть не обременителен!

Та же ситуация и с плагинами, т.к. внутри себя плагин работает с собственными (внутренними) переменными, а имена необушных переменных использует только для вывода конечного результата как, своего рода, "адресаты".
Потому, "отправлять" в плагин данные через составные переменные ещё можно (о правильности позаботится необушный интерпретатор), но получать "ответ" - НЕТ!


Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
Alex3AДата: Пятница, 12 Март 2010, 13:31 | Сообщение # 56
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
Peter, что то как то все рамазано, я бы [Var[x]], назвал просто массивом,
а не переменной, потом во многих языках, есть понятия передача переменной по ссылке
и по значению, и что такое эти ваши страшные составные переменные, это структуры
или просто составное имя? Некоторые языки, в частности и ммв скрипт, позволяют
манипуляции с именами, превращая содержимое переменной в ссылку на объект.
Тут очевидно у вас происодят путаницы в виду оригинального синтаксиса, []используются
и как делимитеры индекса массивов так и в иных синтаксических построениях.
Да, и че там с массивами, одномерные, многомерные, ассоциативные?
 
DEMBELДата: Пятница, 12 Март 2010, 13:45 | Сообщение # 57
Наш дизайнер
Группа: Модераторы
Сообщений: 2314
Репутация: 25
Награды: 12
Статус: Offline
массивы? могут быть и многомерными, например [Var[x]_[y]]
 
PeterДата: Пятница, 12 Март 2010, 18:52 | Сообщение # 58
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
Ни в языке NB, ни в языке ММВ, нет такого понятия "ссылка на объект".
Это все - игра слов, и не более.
В обоих случаях, интерпретатор тупо работает с символьным данными, и на основе их анализа определяет ЧТО и КАК дальше делать.
Пример [Var[x]] это всего лишь пример.
Можно написАть и иначе [Var][х], смысл совсем иной, но и в том и в другом случае интерпретатор будет оперировать содержимым переменных, а не их именами!
Для интерпретатора: [Var] - означает получить содержимое переменной по имени (или присвоить значение переменной по имени), а просто Var (т.е. без скобок) - всего лишь "слово".
Говоря проще, когда интерпретатору попадается конструкция типа [Var] (в нашем понимании - ИМЯ ПЕРЕМЕННОЙ), он лезет в эту переменную, и вытягивает её содержимое.
Именно по-этому в тех местах скриптов, где нужно использовать именно ИМЯ переменной, вместо скобок применяются их ASCII коды, т.е. #91 и #93.
Т.е. если написАть в скрипте [#91]Var[#93], то это уже будет обозначать (для интерпретатора) использовать ИМЯ переменной, а не её содержимое.

Добавлено (12 Март 2010, 18:21)
---------------------------------------------

Quote (DEMBEL)
массивы? могут быть и многомерными, например [Var[x]_[y]]

Нет, не могут!
Это будет такой же обыкновенный массив, но с чуть иным синтаксисом описания членов массива.

Добавлено (12 Март 2010, 18:52)
---------------------------------------------

Quote (Alex3A)
что такое эти ваши страшные составные переменные, это структуры
или просто составное имя? Некоторые языки, в частности и ммв скрипт, позволяют
манипуляции с именами, превращая содержимое переменной в ссылку на объект.

Вот теперь, прочитав ещё раз, я понял суть вопроса.
Ну тупой я такой, ну что поделаешь! :D
Фактически, мы всегда имеем дело со ссылками на какие-то ячейки пямяти, в которых хранится определенная информация. Эти ячейки и называются "переменными", т.к. мы можем менять их содержимое.
В NB все так и происходит - когда мы пишем [Test], для интерпретатора это означает: забраться в область пямяти (переменную) с именем Test, и вытащить от туда инфу.
В этом смысле "да" - ссылка.
Когда инерпретатору попадется, скажем [Test][n], то он сложит вместе содержимое переменных Test и n в одно целое, и выдаст общий "результат", т.е. если в [Test] содержится "кошка", а в [n] содержится "черная", то мы получим "кошкачерная"
Если же написАть [Test[n]], то интерпретатор полезет в переменную, имя которой сложится из содержимого переменной [n] и "слова" Test, т.е. если в n содержится "5", то мы получим новое имя переменной [Test5], а если в n содежится "собака", то мы получим [Testсобака].

Чем дорожу... Чем рискую на свете я....
Мигом одним! Только мигом одним!...

WHITESNAKE St.Petersburg - 11.12.2008
 
Alex3AДата: Пятница, 12 Март 2010, 19:30 | Сообщение # 59
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
Quote (Peter)
Фактически, мы всегда имеем дело со ссылками на какие-то ячейки пямяти,

Это безспорно, структуры, массивы и прочее это только интерпритация ячеек памяти.
то есть
Quote (Peter)
Если же написАть [Test[n]],
[Test[5]] и [Test5] одна и та же переменная? А какое же тогда там понятие о массивах? Что значит точка в конструкции
[[ПеРеМ1].[ПеРеМ2].пЕрЕм3].
Quote (Peter)
Фактически, мы всегда имеем дело со ссылками на какие-то ячейки пямяти

Ну если что бы было понятней, как это все в памяти, в маш коде, переменная это адрес
ячейки, а ссылка это адрес ячейки памяти в которой содержится адрес переменной.
Ну это так, грубо говоря, смотря как это воспринимает компилятор, возможно и такое,
что фигурирует не адрес переменной а ее значение.
 
DEMBELДата: Пятница, 12 Март 2010, 19:50 | Сообщение # 60
Наш дизайнер
Группа: Модераторы
Сообщений: 2314
Репутация: 25
Награды: 12
Статус: Offline
Quote (Alex3A)
[Test[5]] и [Test5] одна и та же переменная?

в общем случае, запись [Test[n]] при [n]=5 будет интерпретироваться как [Test5]
Quote (Alex3A)
А какое же тогда там понятие о массивах?

понятия о массивах нет, это просто похоже на именованные таким образом переменные... хотя не совсем, там можно извлечь размер массива, есть такой оператор! :)
 
Форум MMB » Всё о программе Neo Book » Вопросы и ответы по NB » Вопрос про переменные (Переменные в Neobook)
Страница 2 из 3«123»
Поиск: