| Вопрос по Базе данных |
| mishem | Дата: Вторник, 03 Март 2009, 14:34 | Сообщение # 1 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Здравствуйте. Вопрос заключается вот в чем. Хочется сделать что бы в одном приложение возможно было редактировать разные файлы базы данных. Заголовки одинаковые, но данные разные. Тоесть нужно Создать новый файл, Открыть файл и Сохранить под тем именем которое нужно. Создать и Открыть вроде сделал, не знаю на сколько правильно. А вот сохранить не получается. Второе, при открыти файла не знаю как связать все поля. Тоесть в одну строчку ввести данные получается, но по всем полям допустим Вычислить сумму для одного поля по всем записям базы.dbfSum, не выходит. Так же не получается Выполнить сортировку в базе данных по определенному полю dbfSort. Ну и соответственно любые другие команды. Помогите разобраться, возможно ли это сделать при такой задаче? С плагином NeoBookDB. Дело в том, что не с програмированием, ни с английским не дружу , Пытаюсь что то сделать методом проб и ошибок. Многое конечно не понятно, но благодаря примерам по чуть- чуть пытаюсь понять. Бьюсь с этими вопросами уже с неделю, не выходит. За ранее благодарен за помощь. Выкладываю на всякий случай файл, что б понятней было что нужно.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Вторник, 03 Март 2009, 17:18 | Сообщение # 2 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Выкладываю на всякий случай файл, что б понятней было что нужно. В этом примере понятно ЧТО нужно только по первому вопросу: Quote (mishem) Открыть файл и Сохранить под тем именем которое нужно. Создать и Открыть вроде сделал, не знаю на сколько правильно. А вот сохранить не получается. Остальное - совершенно НЕПОНЯТНО, т.к. нет ни формул пересчета, ни - команд, т.е. - ничего! Итак, первый вопрос... Для того чтобы сохранить файл базы под новым (другим) именем, нужно просто применить стандартную необушную команду FileCopy. Естесственно, что копируемый файл (база данных) предварительно должен быть сохранен! Этот код сохранения базы под новым именем: Code FileSaveBox "Сохранить" "Any File|*.*" "[PubDir]" "[FileName]" ChangeFileExt "Новый" ".dbf" "[FileName]" работать не будет! Команда FileSaveBox только вызывает диалог выбора имени сохраняемого файла, но сам файл ещё не сохраняет! Поэтому полный код сохранения следует переписать примерно так: Code DefineVar "[FileName]" "String" "" "Local" "" FileSaveBox "Сохранить базу как...." "Базы данных|*.dbf" "[PubDir]" "[FileName]" If "[FileName]" "<>" "" FileCopy "имя сохраняемой базы" "[FileName]" EndIf Где: [FileName] - новое имя базы. Естесственно, что имена файлов должны быть ПОЛНЫМИ, т.е. С ПУТЯМИ! Если же базы предполагается тусовать в папке приложения, то можно команду FileCopy записать так: Code FileCopy "[PubDir]Старая база.dbf" "[PubDir]Новая база.dbf" Если старая база (под старым именем) больше не нужна, то ее можно просто удалить: Code FileErase "[PubDir]Старая база.dbf" Для ответа на остальные вопросы, нужны подробности: ЧТО хотите получить, и ЧТО и КАК делаете? Quote (mishem) с английским не дружу Это вполне поправимо: скачать русскую справку к плагину NeoBookDB можно отсюда.
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Вторник, 03 Март 2009, 19:11 | Сообщение # 3 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) Это вполне поправимо: скачать русскую справку к плагину NeoBookDB можно отсюда. Справка у меня есть, по этому и заостряю внимание пока именно на этом плагине. Даже перевел его трохи что б более понятно было. С сохранением буду пробовать сейчас. По второму вопросу. Вычислить сумму для одного поля по всем записям базы.dbfSum, не выходит. Эта команда суммирует все записи в столбце. Допустим нужно сложить в столбце Итог все числа. И вывести сумму , ну если на этом примере так как не создал еще один столбец пусть будет к примеру столбец Название или тот же Итог. Дело в том, что при создании файла базы, имена переменных, связанных с полями базы [FileName] выглядели следующим образом:[.NAZVANIE], [.KOLIHESTVO], [.CENA], [.ITOG]. После команды dbfDefineAlias программа , как я понимаю видет [Новый.NAZVANIE], [Новый.KOLIHESTVO] и т.д так как я задал псевдоним Новый. Но при попытке ввести команду dbfSum в поле Field to Perform Calculation on:(Имя поля, содержимое которого подлежит суммированию) Цитата.(Это обязательно должно быть реально существующее поле базы данных) Но такого поля в комбинированном списке нет. Пробовал вручную вводить[Новый.NAZVANIE],[.NAZVANIE], ничего не получается. То есть пока файл не открыт, такого поля не существует. Короче прикладываю еще один файл, может там понятней будет. Кнопки открыть и сохранить, просто созданы пробные. Для создания и открытия нажмите на 1. Остальные 7 предусмотрены для других файлов.
Я люблю думать что умею рисовать
|
| |
| |
|
| mishem | Дата: Вторник, 03 Март 2009, 19:13 | Сообщение # 4 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Почему то файл не прикрепился.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Вторник, 03 Март 2009, 19:41 | Сообщение # 5 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Кажется начинаю понимать вашу проблему... Я попробую по-позже вечером разобрать это дело, а пока: Quote (mishem) Но такого поля в комбинированном списке нет. Его там и не должно быть, т.к. вы используете dbfDefineAlias, а это (в свою очередь) подразумевает ДИНАМИЧЕСКОЕ создание псевдонимов имен полей в процессе работы. Кроме того: Quote (mishem) Пробовал вручную вводить[Новый.NAZVANIE] Такая конструкция не будет работать В ПРИНЦИПЕ, т.к. имена переменных в NB должны быть ОБЯЗАТЕЛЬНО АНГЛИЙСКИМИ (имена, а не содержимое!). Кстати, к названиям объектов это тоже относится! Побробуйте так: [Noviy.NAZVANIE] Кроме того, имейте ввиду, что сотавные имена переменных стопроцентно срабатывают только в командах самой NB (приложения-проекта), а в случае плагинов могут быть нестыковки. Тут все зависит от того как автор плагина наладил обмен данными с главным приложением.
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Вторник, 03 Март 2009, 21:12 | Сообщение # 6 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Peter, Спасибо большое. Вся загвоздка была в сохранение. Теперь дальше думаю со вторым вопросом разберусь легко. Добавлено (03 Март 2009, 21:12) ---------------------------------------------
Quote (Peter) Такая конструкция не будет работать В ПРИНЦИПЕ, т.к. имена переменных в NB должны быть ОБЯЗАТЕЛЬНО АНГЛИЙСКИМИ (имена, а не содержимое!). Сдесь Вы немножко ошибаетесь, все работает. Может быть потом глюки будут, не знаю. Еще раз спасибо за помощь, дальше все пошло как по маслу. Уперся лбом, и стронуться не мог. Понимаю что решение простое должно быть, а как не могу понять. И обращаться на форум не хотелось, вроде все просто должно быть. Могу выложить файлик NeoBookDB переведенный. Правда за качество не отвечаю. Переводил для себя, что б в справку часто не ныкаться. Может кому нужно будет? Перевод брал со справки. Переведены только разъяснения, что какая функция выполняет.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Среда, 04 Март 2009, 19:09 | Сообщение # 7 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Сдесь Вы немножко ошибаетесь, все работает. Да, действительно, работает, что странно. Сейчас проверил на диалоге открытия файла. По-первости, начиная работать в NB три с половиной года назад (версия 5.0.2 была), я не раз нажигался на русских именах переменных, и принял за правило "ни слова по-русски". Может чего с тех пор изменилось в версиях. Но... Quote (mishem) Может быть потом глюки будут, не знаю МОГУТ! Например, с объектами "радиокнопка" русские имена переменных уже не прокатывают! И в именах объектов - тоже! Можете сами это проверить. Quote (mishem) И обращаться на форум не хотелось, А для чего тогда нужен форум? Quote (mishem) Могу выложить файлик NeoBookDB переведенный Выкладывайте, посмотрим... У меня самого уже давно была мысль сделать к этому плагину русик, да все лень-матушка не пущает!... Да и надо ли?...
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Среда, 04 Март 2009, 20:38 | Сообщение # 8 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) А для чего тогда нужен форум? Да встречал тут реплики по поводу что читать надо сначало, а потом с вопросами лезть с глупыми Перечитал уже ни один раз, а толку мало. Одно читаешь, другое забываешь. Да и много не понятного. Только через практику доходит, когда несколько раз что то сделаешь. Вчера всю ночь решал как сохранить просто файл без диалогового окна Всю голову изломал. И то подставлю, и другое. Не выходит и все тут. А сегодня уже к вечеру, думаю дай просто скопировать оставлю. Получилось Вот и сейчас уже часа два решаю как новый файл создать? Опять же, все должно быть просто, так не могу врубиться. Ну Вы поняли, щелкнул на кнопку Новый, и база должна сама создаться и открыться в окне. Второй вопрос тоже не могу решить. Сделал что бы при закрытие базы выскакивало диалоговое окно сохранить или закрыть?, так оно выскакивает когда база не открыта и следом ошибка. Какие только Если не перепробовал. Вот и бьюсь как рыба об лед. Вопросы простые, а въехать не могу. Кнопка закрытия вверху, где на нее команды прписывать? С этим еще не разбирался, но между делом думаю о ней. По этому по каждому вопросу как то на форум обращаться.... Не долго помагать будут. Надо и самому мозгами шевелить. Quote (Peter) У меня самого уже давно была мысль сделать к этому плагину русик, да все лень-матушка не пущает!... Да и надо ли?... Не знаю, надо или нет, но мне помогает. Правда при сборке проекта в дистрибутив , после распаковки он почему то нулевым оказался. С английским не пробовал собирать. Прога у меня патченная стоит, может по этому, а может и из за кривых рук. Если из за рук, то можно на время сборки назад английский кидать. Файлик прикладываю, я его между делм переводил. Да и переводом не назовешь, из справки копировал, в него вставлял Он у меня на два кило тяжелей получился, но вроде работает. Новичкам думаю поможет.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Среда, 04 Март 2009, 23:48 | Сообщение # 9 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Да встречал тут реплики по поводу что читать надо сначало, а потом с вопросами лезть с глупыми Такой подход совершенно верен В ПРИНЦИПЕ! Пока человек не привыкнет пользоваться собственной головой, а не чужой, любая помощь бесполезна! Есть тут на форуме (в разделе ММВ) некоторые "юзвери", которым даже просто лень заглянуть в справочный файл (РУССКИЙ!) по программе, где уже ЕСТЬ ответы на все их вопросы! Другие не могут даже толком сами ПОНЯТЬ чего они хотят! И т.д. и т.п.. Поэтому и приходится порой делать подобные замечания! Quote (mishem) Только через практику доходит, когда несколько раз что то сделаешь Вот ИМЕННО! Quote (mishem) Сделал что бы при закрытие базы выскакивало диалоговое окно сохранить или закрыть?, так оно выскакивает когда база не открыта и следом ошибка. Какие только Если не перепробовал. Вот и бьюсь как рыба об лед. Тут нужно усвоить очень четко одно правило: компьютер будет делать не то, что вы имели ввиду, а то, что вы ему ПРИКАЗАЛИ! В NeoBook (как, собственно и в других языках) выполнение команд происходит ПОСТРОЧНО, согласно скрипта. У вас в распоряжении есть такая штука, как отладчик! Он позволяет ПОШАГОВО отслеживать ход выполнения программы, состояние переменных, и т.д.. Пользуйтесь им. Очень часто помогает найти ошибку! Кроме того... Вот, например, код открытия базы данных из вашего примера: Code ClearVariables "" FileOpenBox "Открыть" "Any File|*.*" "[PubDir]" "[FileName]" "" dbfDefineAlias "[FileName]" "Новый" dbfOpen "Новый" "" dbfShowTable "Новый" "Rectangle1" "" Формально, вроде, все правильно. Но в нем и заложена потенциальная ошибка - ЧТО будет если пользователь НЕ выберет файл в окне диалога? И эту ситуацию (и ей подобные) нужно ОБЯЗАТЕЛЬНО ПРЕДУСМОТРЕТЬ! Иными словами, нужна обработка соблюдения (или НЕсоблюдения) какого-либо условия (или целой группы условий). Т.е. в вашем случае (с ошибкой при сохранении базы) сначала нужно проверить, например, "а открыта ли она?", и только по результату проверки выполнять или не выполнять сохранение! Quote (mishem) Кнопка закрытия вверху, где на нее команды прписывать? Из справочного файла NeoBook: Quote MessageBox Назначение: Вывести диалоговое окно, содержащее сообщение и кнопки выбора. ... variable Имя переменной, в которой будет храниться номер выбранной кнопки. Первая кнопка = 1, вторая = 2, и т.д. Переменная будет содержать значение 0 (ноль), если пользователь закроет диалоговое окно, не сделав никакого выбора. Ответ - в последнем выделенном (мною) абзаце! Это верно для стандартного необушного MessageBox. В случае, если применяется свой собственный (сконструированный самостоятельно) диалог выбора, нужно несколько иначе... Quote (mishem) По этому по каждому вопросу как то на форум обращаться.... Не долго помагать будут. Смотря какие вопросы... Если вопросы по-существу, то - нет проблем! А если в духе: "а можно ли?", то... И помните: не Боги горшки обжигают! Все мы когда-то были чайниками... Может быть, до сих пор ими и остаемся, а нам самим кажется, что все уже, якобы, знаем... Я, например, много интересного для себя нахожу, порой, на оффоруме NeoBook! Quote (mishem) Прога у меня патченная стоит Рекомендую отказаться от крякнутого варианта! Плагин посмотрю, но можно не сегодня?.. Чего-то сил уже нету и туго соображаю....
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Четверг, 05 Март 2009, 16:32 | Сообщение # 10 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) Т.е. в вашем случае (с ошибкой при сохранении базы) сначала нужно проверить, например, "а открыта ли она?", Вот в этом и заключается проблема. Как это сделать? Если не тяжело, напишите пример. Не могу понять, как это сделать. С созданием нового файла вроде разобрался, правда не знаю, правильно ли? Code dbfClose "sample"
FileErase "[PubDir]sample" FileErase "[PubDir]Новый.dbf" ClearVariables "" dbfCreateMultiUser "[PubDir]sample" "NAZVANIE,String,37|KOLIHESTVO,Integer,0|CENA,Currency,0|ITOG,Currency,0|OSTATOK,Integer,0|BRAK,Integer,0|VSEGO,Currency,0" ""
ChangeFileExt "[FileName]" "Новый.dbf" "[FileName]" FileCopy "sample" "[FileName]" dbfShowTable "[PubDir]sample" "Rectangle1" "ReadOnly"
ExtractFileName "[FileName]" "[ActiveTable]" StrUpper "[ActiveTable]" "[ActiveTable]"
Я люблю думать что умею рисовать
|
| |
| |
|
| Alex3A | Дата: Четверг, 05 Март 2009, 17:06 | Сообщение # 11 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
| Че то я непойму ваши заморочки! База данных это не визуальная штука, при изменении значения какого либо поля оно автоматом меняет его в базе, таким образом никакого сохранения в файл нет. Правда я не знаком с конкретным плагином, в принципе все возможно, но скорее всего там может неправильно функционировать механизм отката (или вы его не правильно используете). Возможно, с упаковкой что то не так. При создании новой базы она пустая. Quote (mishem) FileErase "[PubDir]sample" FileErase "[PubDir]Новый.dbf" .... При некоторых манипуляциях при переносе.....копировании файла операционка не всегда адекватна. Тут надо поизголяться, не любит когда работаеш с одним именем файла.
|
| |
| |
|
| mishem | Дата: Четверг, 05 Март 2009, 18:26 | Сообщение # 12 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Имя файла базы одно , в моем случае "sample" Файл под именем допустим Новый, копируется в файл Sample, и с этим файлом происходят все изменения. При создании новог удаляем файл Sample так как там остается вся измененная информация. Если его не удалять то плагин автоматически открывает Sample с той информацией которая в нем была, Если же все сделано правильно, как перечисленно выше то создается пустой файл Новый, но допустим мы сохранили информацию в нем случайно, или намеренно, то при создании очередного нового файла он будет опять открываться не пустым, а с той информацией которая в нем оставалась. Отсюда и вывод что его тоже нужно удалять. Только тогда будет создана новая база пустая. При сохранении файла команда простая Code FileCopy "[PubDir]sample" "[FileName]" У меня прблема в другом. При открытии нового , или закрытии старого файла сделал что бы выскакивало окощко с вопросом Сохранить? Когда файл открыт, все нормально. Но когда ничего не открыто, выскакивает предупреждение что нет файла базы данных. Вот я и не пойму что нужно прописать, что бы сначало программа опросила открыт ли файл, если нет то продолжала бы действие без открытия окна Сохранить?
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Четверг, 05 Март 2009, 18:34 | Сообщение # 13 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) Не могу понять, как это сделать. В опциях плагина нет специальной команды-проверки типа: IsDatabaseOpen... Также нет и специальной переменной, по которой можно определить состояние базы. Поэтому придется самостоятельно создать требуемую функцию, что совсем несложно. Тут могут быть два различных подхода (в зависимости от конкретной ситуации). Но, в самом простейшем (и универсальном!) варианте это может выглядеть примерно так: Code SetVar "[NameOfDatabase]" " Имя проверяемой базы" GoSub "IsDB_Open" If "[DB_Open]" "=" "True" ... делаем, что надо Код подпрограммы IsDB_Open Code :IsDB_Open dbfShowErrors "False" SetVar "[dbfError]" "" DefineVar "[DB_Feelds]" "String" "" "Local" "" dbfGetFieldNames "[NameOfDatabase]" "[DB_Feelds]" If "[dbfError]" ">" "" SetVar "[DB_Open]" "False" Else SetVar "[DB_Open]" "True" EndIf dbfShowErrors "True" Return Подпрограмму IsDB_Open, лучше переделать в отдельную самостоятельную функцию, и поместить в библиотеку функций, что повысит её "универсальность"! Кстати, вместо dbfGetFieldNames можно использовать dbfClose ! (От ситауции!) Quote (mishem) правда не знаю, правильно ли? Есть совсем непонятные вещи... Зачем нужно, например: Code ChangeFileExt "[FileName]" "Новый.dbf" "[FileName]" Впрочем, я не знаю конкретных условий вашей задачи... Quote (Alex3A) при изменении значения какого либо поля оно автоматом меняет его в базе, таким образом никакого сохранения в файл нет. Правда я не знаком с конкретным плагином, В плагине есть переключаемая опция автосохранения баз, "ручное" сохранение баз, возможность отката, и т.п.
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Четверг, 05 Март 2009, 19:12 | Сообщение # 14 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Peter, Спасибо большое, буду разбираться. Quote (Peter) Есть совсем непонятные вещи... Зачем нужно, например: Code ChangeFileExt "[FileName]" "Новый.dbf" "[FileName]" У меня по проекту нужна автосортировка, без него нужно делать вручную. Плюс вывел в заголовок название файла что б знать какой открыт, а так будет пусто. Плюс в строке где пишется имя файла при сохранить как.. хочу сделать что бы автоматически было написано имя сохраняемого файла. Правда еще не знаю как. Делаю для жены, а она вообще с программами не работала, пусть привыкает, У меня все это в екселе есть, приходиться самому данные вводить, иначе все формулы постирает Вот и делаю что б на ее плечи все переложить. В интернете поискал подобие, только монстры, или сплошная бухгалтерия в которой сам не разберусь, не то что жене доверять. Да, и еще такой вопрос, можно ли извлечь имя файла без расширения, что б выводилось только имя? Что то поискал, не нашел. Вы меня поймите правильно, я не легкости ищу, те коды что вы пишите не просто тупо копирую и сохраняю, а потом анализирую почему так , а почему эдак. Много почерпнул из примеров и часто к ним обращаюсь в поисках решения, но вот с сохранением ни одного нет.
Я люблю думать что умею рисовать
|
| |
| |
|
| Alex3A | Дата: Четверг, 05 Март 2009, 19:15 | Сообщение # 15 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
| Quote (Peter) Также нет и специальной переменной Но подумать немного? Количество записей в базе доступно? Если открыта то получим, если нет какое число вернеться? можно и чего другое проверять, количество полей, к примеру. Quote (Peter) В плагине есть переключаемая опция автосохранения баз, "ручное" сохранение баз, возможность отката, и т.п. Нафиг надо не пойму, так безделица, убить надо. Только база пухнет от этих откатов, пак надо делать. Некая порнография на транзакцию. В своем плагине я поубивал все эти прелести. Quote (Peter) IsDatabaseOpen Посмотри, по традиции, есть свойство active, если его вывели.
|
| |
| |
|
| mishem | Дата: Четверг, 05 Март 2009, 19:42 | Сообщение # 16 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Alex3A) Только база пухнет от этих откатов, пак надо делать Так он есть в плагине dbfPack , если я правильно понял. Quote (Alex3A) Но подумать немного? Количество записей в базе доступно? Если открыта то получим, если нет какое число вернеться? можно и чего другое проверять, количество полей, к примеру. А можно поподробней, как это делается?Добавлено (05 Март 2009, 19:42) ---------------------------------------------
Quote (mishem) А можно поподробней, как это делается? Peter, Как раз выше и написал, извиняюсь за преждевременный вопрос
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Пятница, 06 Март 2009, 03:17 | Сообщение # 17 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Вот только закончил генеральную уборку за своим компьютерным столом. Клавиатуру отмыл на 100% под душем... Не поверите, но оказывается она - БЕЛАЯ!... Quote (mishem) У меня по проекту нужна автосортировка, без него нужно делать вручную. Плюс вывел в заголовок название файла что б знать какой открыт, а так будет пусто. Плюс в строке где пишется имя файла при сохранить как.. хочу сделать что бы автоматически было написано имя сохраняемого файла. Для всех этих "дел" ChangeFileExt не нужна! Можно использовать, например, ExtractFileName Quote (mishem) Да, и еще такой вопрос, можно ли извлечь имя файла без расширения, что б выводилось только имя? Что то поискал, не нашел. А если немного подумать?... На самом деле, очень просто! Нужно воспользоваться функциями работы со строками. А можно и ещё проще... (фокус!) Code ExtractFileName "[FullName]" "[Name]" ChangeFileExt "[Name]" "" "[Name]" В результате в переменной [Name] останется имя файла БЕЗ расширения. Вот и ChangeFileExt пригодилась! Quote (Alex3A) Но подумать немного? Количество записей в базе доступно? А я ЧТО, собственно, предложил? Quote (Peter) dbfGetFieldNames "[NameOfDatabase]" "[DB_Feelds]" Quote (Alex3A) если нет какое число вернеться? Какое?.. Размер бюстгальтера Аллы Пугачевой! Что, страшно стало? То-то!... Никакое! Возникнет исключительная ситуация, и вернется сообщение об ошибке, которое и нужно обработать (и в NeoBook, и в плагине все эти вещи предусмотрены). И все это и проделано в указанном ранее примере. Quote (Alex3A) Нафиг надо не пойму, так безделица, Я уже не раз убеждался в том, что NeoBook стОит своих 200 "зеленых", и что ребята из NeoSoft - профессионалы! Плагин NeoBookDB - их творение! И, несмотря на то, что плагин бесплатный, он продуман и сделан "на славу"! А если его покажется мало, то есть NeoBookDBPro, который ещё мощнее! И к нему для версии 1.0b есть рабочий серийник. В более поздних версиях плагина этот серийник, к сожалению, забанен. Quote (Alex3A) Некая порнография на транзакцию. В своем плагине я поубивал все эти прелести. Изверг! Прелести надо нежно оберегать, а не убивать в нескончаемой битве за размер! Что ж, хозяин - барин!... Несколько обнадеживает, что акция, все же, "транЗ-", а не "транС-"! Quote (mishem) Так он есть в плагине dbfPack , если я правильно понял. Совершенно верно! И база не пухнет...
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Пятница, 06 Март 2009, 10:47 | Сообщение # 18 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) А если немного подумать?... На самом деле, очень просто! Нужно воспользоваться функциями работы со строками. А можно и ещё проще... (фокус!) Code ExtractFileName "[FullName]" "[Name]" ChangeFileExt "[Name]" "" "[Name]" Минут через 10 после заданного вопроса сделал как Вы пишите. Quote (Peter) А если его покажется мало, то есть NeoBookDBPro, который ещё мощнее! И к нему для версии 1.0b есть рабочий серийник. В более поздних версиях плагина этот серийник, к сожалению, забанен. У меня к 1.1 е подошел вроде, вроде потому что он его проглатил, но работать с ним не пробовал. Если нужен, могу на мыло кинуть. Сюда не предлагаю, читали, в курсе. Peter, Спасибо за помощь.Ух, вроде доделал. Правда ошибок море, но все со временем. Думаю буду дальше ее шлифовать. NeoBook действительно хорош, затягивает. Но голова пухнет. С вопросами я не отстану, еще много чего не понятного.  Добавлено (06 Март 2009, 10:47) --------------------------------------------- Да, есть еще вопрос. Возможно ли сделать что бы при поиске выводилось число найденых вариантов? Пробовал через dbfQueryCount, но он выводит общее колличество.
Я люблю думать что умею рисовать
|
| |
| |
|
| Alex3A | Дата: Пятница, 06 Март 2009, 12:16 | Сообщение # 19 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
| Quote (Peter) А я ЧТО, собственно, предложил? Просто провтыкал. Quote (Peter) А если его покажется мало, то есть NeoBookDBPro, который ещё мощнее! Мощнее ограничиваеться самим форматом dbf, попытки сделать его как то умнее не разумны, с моей точки зрения. Формат плотно занимает свою нишу, и очень полезен для малых баз, не требующих сильных извращений. Для более быстрых и умных баз есть другие форматы, к примеру мускул. Просто привел в логическое соответствие с определенным кругом задач, ибо никто не будет делать никаких банковских операций на ммв.
|
| |
| |
|
| Peter | Дата: Пятница, 06 Март 2009, 19:12 | Сообщение # 20 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) У меня к 1.1 е подошел вроде, По этому вопросу см. здесь. Сообщение 3. Quote (mishem) Минут через 10 после заданного вопроса сделал как Вы пишите. Можно сделать и иначе, но указанный способ - самый простой. Попробуйте сделать через функции строк. Всего чуть сложнее, зато будет неплохая практика! Quote (mishem) С вопросами я не отстану, еще много чего не понятного. А вы полагаете, что я всё сверху-до-низу знаю? Quote (mishem) Возможно ли сделать что бы при поиске выводилось число найденых вариантов? Расшифруйте! Quote (Alex3A) Просто провтыкал. Прежде, чем судить, нужно хоть чуть-чуть в тему въехать! Quote (Alex3A) Мощнее ограничиваеться самим форматом dbf, попытки сделать его как то умнее не разумны, с моей точки зрения. Формат плотно занимает свою нишу, и очень полезен для малых баз, не требующих сильных извращений. Для более быстрых и умных баз есть другие форматы, к примеру мускул. Quote (Alex3A) Просто привел в логическое соответствие с определенным кругом задач, ибо никто не будет делать никаких банковских операций на ммв. Со СВОИМ кругом задач, т.е - для СЕБЯ! Если делать это для людей, и выкладывать под гордым названием "Плагин для работы с базами данных", то нужно хотя бы стараться делать по-максимуму! Мало ли кому что может понадобиться. Если чего-то просто не получается сделать, то это - одно! А если умышленно кастрировать плагин (в соответствии со своими личными представлениями о полезности и рациональности), то он будет просто валяться на сайте, невостребованным!
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Пятница, 06 Март 2009, 20:52 | Сообщение # 21 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) Возможно ли сделать что бы при поиске выводилось число найденых вариантов? Расшифруйте! При команде dbfFind посылается запрос на поиск, допустим ввел слово мама. Так вот возможно ли при помощи какой нибудь команды, сделать так, что бы прошел поиск по всей базе нашел все слова мама и вывел в переменную , сколько есть совпадений со словом мама. В численном варианте. Или я многого хочу? Quote (Peter) У меня к 1.1 е подошел вроде, По этому вопросу см. здесь. Сообщение 3. Я это читал. Ну можно и на другом компе установить прогу с плагином. Больше людей про программу узнают. Quote (Peter) Минут через 10 после заданного вопроса сделал как Вы пишите. Можно сделать и иначе, но указанный способ - самый простой. Попробуйте сделать через функции строк. Всего чуть сложнее, зато будет неплохая практика! Сложно для меня еще. Никак с переменными не разберусь. Где и когда что нужно прописывать. В каких случаях присваивать имя переменной, когда назначать ее и т.д. В справке все поверхностно описано. Не плохо было бы иметь справку с подробным описанием когда и где что нужно применять. Quote (Peter) С вопросами я не отстану, еще много чего не понятного. А вы полагаете, что я всё сверху-до-низу знаю? Ну во вся ком случае НА МНОГО бльше чем я.
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Пятница, 06 Март 2009, 22:48 | Сообщение # 22 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) При команде dbfFind посылается запрос на поиск, допустим ввел слово мама. Так вот возможно ли при помощи какой нибудь команды, сделать так, что бы прошел поиск по всей базе нашел все слова мама и вывел в переменную , сколько есть совпадений со словом мама. В численном варианте. Или я многого хочу? А как же dbfQuery ? Пробовали? Quote (mishem) Ну можно и на другом компе установить прогу с плагином. Больше людей про программу узнают. Иными словами, к своей программе вы намерены добавлять (в виде бонуса ) и дистрибутив самой NeoBook! Оррригинальный способ популяризации NB! Quote (mishem) В справке все поверхностно описано. Да, к сожалению, необушная справка (в отличие от ММВ-шной) суховата, но все же в ней есть необходимый минимум информации. Может и найдется когда-нибудь какой-нибудь добрый человек, который напишет что-то типа хрестоматии по NeoBook! Может быть...
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Пятница, 06 Март 2009, 23:39 | Сообщение # 23 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) А как же dbfQuery ? Пробовали? Нет, пробовал .dbfQueryCount, он а считает все строки. Не подумал, может ее с dbfQuery в связке нужно использовать.? Сейчас буду пробовать. Я вчера уставший был, голова туго соображала. Да и сегодня пару часов поспал и уже опять копаюсь. Quote (Peter) Иными словами, к своей программе вы намерены добавлять (в виде бонуса ) и дистрибутив самой NeoBook! Оррригинальный способ популяризации NB! Ну да После того как написал, специально удалил прогу и заново переустановил. Плагин регить не пришлось. Значит он в реестр прописывается. Может нужно просто найти строки, и сделать батник? И все проблемы решены? Ну это так, на вскидку. Quote (Peter) Да, к сожалению, необушная справка (в отличие от ММВ-шной) суховата, но все же в ней есть необходимый минимум информации. Может и найдется когда-нибудь какой-нибудь добрый человек, который напишет что-то типа хрестоматии по NeoBook! Может быть... Буду надеяться.  Добавлено (06 Март 2009, 23:33) ---------------------------------------------
Quote (mishem) Не подумал, может ее с dbfQuery в связке нужно использовать.? Точно, пошла ракета  Добавлено (06 Март 2009, 23:39) --------------------------------------------- Скачал плагин для назначения быстрых клавиш, Outpost заблокировал "Заблокирован вредоносный объект "Watch Right" (System monitoring) в c:\program files\neobook 5\plugins\neobookkb\ffjmpweb.dll" Это получается если сделать прогу с этим плагином, то где будет стоять защита, плагин работать не будет? Правильно мыслю, или это зараза какая?
Я люблю думать что умею рисовать
|
| |
| |
|
| Alex3A | Дата: Суббота, 07 Март 2009, 01:25 | Сообщение # 24 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
| Quote (Peter) Если делать это для людей, и выкладывать под гордым названием "Плагин для работы с базами данных", У тебя несколько дилетанское суждение по данному вопросу, dbf это один из старых файловых форматов баз данных, его применяли еще в досе, менялись нужды, возникали новые идеи и принципы функционирования,со временем, появилялись иные форматы. Так откат в dbf, некий прообраз транзакции (трансакции - термины вполне равнозначны и применимы, я предпочитаю первый вариант). Надо не только знать что такое тразакция, но и иметь представление как, когда, почему и зачем она применяеться. Кроме того, не открою секрета, данный механизм может быть с успехом реализован в управляющей базой программе. Хоть dbf и древний формат, однако для ряда задач, он являеться прекрасной альтернативой, к тому же его разновидностей куча. Зная структуру формата и приципы работы базы, я сознательно не активировал эту возможность. У многих вещей есть множество возможностей, для использования которых лучше выбрать иную альтернативу, думаю примеры тут излишны. Quote (Peter) Прежде, чем судить, нужно хоть чуть-чуть в тему въехать! В тему то я въехал, просто не мудрено и проглядеть что то, особенно если язык непривычен. Quote (mishem) ffjmpweb.dll Вообще то несколько странное имя для такого плагина.
|
| |
| |
|
| Peter | Дата: Суббота, 07 Март 2009, 02:36 | Сообщение # 25 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (Alex3A) У тебя несколько дилетанское суждение по данному вопросу Несомненно! Все, что меня интересует на компьютере это - музыка(?) и видео, частично - графика (в основном применительно к двум предыдущим типам). NB и Delphi, опять-таки по части мультимедиа. Все остальное - по мере необходимости (к чему забивать голову хламом?) И в базы данных влезать глубоко пока не вижу надобности для себя. Будет оказия - будет пища... Алекс, с тобой приятно иметь дело, когда ты переходишь с терминов на нормальный человеческий язык! Как там, в "Трактире на Пятницкой", вроде бы?... "Слушай, француз! Если хочешь, чтобы я тебя понимал, говори по-русски!" Quote (Alex3A) не мудрено и проглядеть что то, особенно если язык непривычен. Это я и имел ввиду. Quote (mishem) Точно, пошла ракета Земля в иллюминаторе... Земля в иллюминаторе... Земля в иллюминаторе видна! Quote (mishem) Это получается если сделать прогу с этим плагином, то где будет стоять защита, плагин работать не будет? Да, примерно так! Правда, "защите" можно дать указание на разблокировку, но это должен делать уже сам пользователь. К сожалению, подобные ситуации - не редкость! Например, Каспер даже на делфийский отладчик тревогу поднимает! А NOD на необушный компиллятор реагирует. Quote (Alex3A) Вообще то несколько странное имя для такого плагина. Может какой "довесок".. А что за плагин?
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Суббота, 07 Март 2009, 08:48 | Сообщение # 26 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Quote (Peter) Может какой "довесок".. А что за плагин? NeoBookKB http://mmbuilder.ru/load/20-1-0-291#loaderdone
Я люблю думать что умею рисовать
|
| |
| |
|
| Alex3A | Дата: Суббота, 07 Март 2009, 12:28 | Сообщение # 27 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2957
Репутация: 31
Награды: 10
Статус: Offline
| Quote (Peter) Может какой "довесок".. А что за плагин? ФФ прижок в сеть ну очень странное имя для Quote (mishem) плагин для назначения быстрых клавиш , а б, может быть, так назвал клавиатурного шпиона. джампхук, к примеру, было бы поприличнее, ведь веб асоциируеться с инетом, а не с ловлей чего либо.Добавлено (07 Март 2009, 12:28) ---------------------------------------------
Quote (Peter) И в базы данных влезать глубоко пока не вижу надобности для себя. И тем не менее часто их используеш, даже не подозревая об этом и не асоциируя некоторые вещи, по сути являющиеся бд. Все дело в неком сложившемся стереотипе о понятии "база данных", о ее назначении и спектра применения Иногда, когда что то лепиш, вдруг осознаеш, что это, вдруг становиться похожим на бд, и в ряде случаев, прихожу к мнению что более уместно применить один из стандартных форматов
|
| |
| |
|
| Peter | Дата: Воскресенье, 08 Март 2009, 00:30 | Сообщение # 28 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Понятно, я же сам и дал эту инфу о плагине! Забыл просто, т.к. сам-то им не пользуюсь. Попробовал сейчас на двух компах (С Нортоном и с Каспером), все работат, никаких претензий нет. А библа эта (ffjmpweb.dll), действительно "довесок" плагину. Возможно, сама ловушка в библе и расположена, т.к. хук - глобальный, и как там все конкретно организовано ХЗ. В общем, то, что Outpost ругается ещё не есть катастрофа! Хотя и оптимизма это тоже не добавляет, т.к. немало, наверное, компов с Оутпостом найдется. Что делать? Искать другой плагин... Quote (Alex3A) Все дело в неком сложившемся стереотипе о понятии "база данных", о ее назначении и спектра применения Да, видимо, так! Может я несколько прямолинейно мыслю... Если будет в дэлфях необходимость работы с базами, то и можно начать вникать в "тонкости", а пока... Ремонт меня в доме достал... Ни на что времени не хватает, зараза! Да, и вообще, достали уже эти тормоза с нашим сайтом! Не хнаю у кого как, но у меня... Можно иногда успеть перекурить (БУКВАЛЬНО!) пока страничка на C-Soft смениться! В конце-концов частенько вылетает сообщение, что сервер временно не может отобразить запрашиваемую страницу... А иногда все просто "летает", только успевай мышкой щелкать! Чума! Одно слово... Добавлено (08 Март 2009, 00:30) --------------------------------------------- Да, кстати... Quote (mishem) Ну можно и на другом компе установить прогу с плагином. Не нужно. Есть одни очень простой трюк как заставить работать на других компах NeoBookDBPro с забаненым серийником, но не очень удобный он... Надо просто на пользовательском компе в Реестре прописАть одну строчку! Например, в процессе установки проги. Если использовать инсталлятор, естесственно... Правда, если в последствии юзер запустит "чистку" Реестра на предмет лишних ключей, то этот трюк может накрыться медным тазом!
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |
|
| mishem | Дата: Воскресенье, 08 Март 2009, 01:32 | Сообщение # 29 |
Ветеран форума
Группа: Проверенные
Сообщений: 751
Репутация: 6
Награды: 2
Статус: Offline
| Так, у меня опять проблема Мы выше о ней говорили. При открытии файла нажимаю отменить, или закрываю окно, выскакивает Cannot copy file. С Сохранить Как.., смудрил Прописал если 0 или отменить, показывать первую строку. А тут опять в стопоре. Никак я с переменными не разберусь, куда, когда и что нужно прописывать. Quote (Peter) Правда, если в последствии юзер запустит "чистку" Реестра на предмет лишних ключей, то этот трюк может накрыться медным тазом! А в самой проге , что бы при каждом запуске , ни как не льзя сделать? Quote (Peter) В общем, то, что Outpost ругается ещё не есть катастрофа! Хотя и оптимизма это тоже не добавляет, т.к. немало, наверное, компов с Оутпостом найдется. Что делать? Искать другой плагин... Да он и не особо нужен , во всяком случае пока. Просто скачал посмотреть, а Outpost не дал Quote (Peter) Да, и вообще, достали уже эти тормоза с нашим сайтом! Не хнаю у кого как, но у меня... Такая же беда, но раз на раз не приходится. Пару раз посты приходилось переписывать. Теперь перед отправкой копирую
Я люблю думать что умею рисовать
|
| |
| |
|
| Peter | Дата: Воскресенье, 08 Март 2009, 01:44 | Сообщение # 30 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 2437
Репутация: 34
Награды: 14
Статус: Offline
| Quote (mishem) При открытии файла нажимаю отменить, или закрываю окно, выскакивает Cannot copy file. Код - в студию, плиз! Quote (mishem) А в самой проге , что бы при каждом запуске , ни как не льзя сделать? Можно, но... При запуске плагины подключаются к приложению раньше, чем начинает работать код, прописанный даже в секции "Startup", поэтому DBPro ругнется раньше, чем ключ окажется в Реестре. Но, при следующем запуске все уже будет ОК. Если, конечно ключик не вичистит кто-нибудь снова! А сам ключ можете найти в Реестре в профиле пользователя. Там все просто... Quote (mishem) Теперь перед отправкой копирую Аналогично!
Чем дорожу... Чем рискую на свете я.... Мигом одним! Только мигом одним!... WHITESNAKE St.Petersburg - 11.12.2008
|
| |
| |