Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Не, то что в плагине я знаю. Просто сейчас одну програму смотрю, так вот там ячейки другим цветом выделены. Вот и подумал мож как то можно сторонними командами.
Вот и подумал мож как то можно сторонними командами.
стороними командами куда?! в плаге в самом гирде этих функций нет, а в той программе есть. я уже где то писал про это на форуме, нет ни цвета ни шрифта ни чебоксов тут надо сам гирд(сетка куда выводится инфа) с этими функциями
Добавлено (29 Января 2014, 19:42) --------------------------------------------- если только не документированные переменные, то в полне возможно кста, а к ячейкам для получения какой либо инфы есть доступ? имею ввиду переменные?
Добавлено (29 Января 2014, 19:43) --------------------------------------------- Твой магаз компы продает?
mishem, тут главное узнать, как ячейка себя идентифицирует... походу я в другой таблице плагинов видел. Но главное суть, что возможно и тут также обратится
Добавлено (29 Января 2014, 20:16) --------------------------------------------- Допустим ты когда меняешь значение в таблице, она же понимает что и где менять, значит у каждой ячейки есть вой "позывной"
мля проверить чет не могу... после ланчера ни один плагин не запускается. ладно, переустановлю нб, там потом проверю
Добавлено (29 Января 2014, 20:25) ---------------------------------------------
Цитатаmishem ()
Хрен ее знает. Номер строки-имя поля.
от куда инфа? от себя?
Добавлено (29 Января 2014, 20:27) --------------------------------------------- mishem, на оффоруме не смотрел, может уже была тема?
Добавлено (29 Января 2014, 20:29) --------------------------------------------- ладно, пошел я перезагружать систему, потом буду ставить нб и плагины если что то нарою, то выложу
Necronomicon, о, благодарю. Где то я его значит профукал.
А я уже сел переводить.
Добавлено (11 Февраля 2014, 20:33) --------------------------------------------- Не. Почитал я справку Вадима и так и ниосилил.
Вадим ее так до ума и не довел.
Пришлось самому мучаться и переводить все с нуля. В шапке обновил ссылки на ReportDesigner и добавил справку. В ReportDesigner ничего судьбоносного не менял, подправил по ходу перевода некоторые выражения.
Одно уточнение. Чтобы справка открывалась из ReportDesigner, файл программы и справки должны называться одинаково. Например если файл программы называется ReportDesigner.ехе, то файл справки должен быть ReportDesigner.сhm. Соответственно если файл программы называется ReportDesigner_RUS.exe, то и файл справки должен называться ReportDesigner_RUS.chm.
Да, и еще, в справке могут быть неточности как в тексте так и в описание. Переводил чисто интуитивно, по догадкам как это должно работать, а не проверял на деле.
Так что если кто встретить неточности, или вообще не правильное описание, выссказываемся, не стесняемся. Бить не буду.
ПЕТР! ЗАЛЕЙ ФАЙЛЫ НА САЙТ! Не говори после что не видел.
Проблема с командой dbpDeleteRecord (удаление текущей записи). Ситуация: представим, что в сетке выделена ячейка, далее следует команда удаления строки, подразумевается, что теперь будет удалена эта строка, но иногда случается, что удаляется не только эта строка, но и одна или даже две строки выше нее При этом плагин сообщает, что "обновление влияет на слишком большое число строк" и просто молча удаляет вместе с нужной строкой и те, которые удалять вовсе не следует. Это катастрофа. Ни у кого не возникала такая ошибка? И, главное, как это побороть? Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
При добавлении данных в базу(в таблицу) надо проверять есть в конце пустая строка или нет. Если есть, не пытаться добавить еще одну. Не хочешь читать хелп?
Вадим, я тебе все ньюансы не смогу припомнить. В таблице должно быть поле с первичным ключом. Иначе если у тебя к примеру будет две записи с одинаковым значением в одном поле, при удалении должна как раз появится такая ошибка.
Пытай счастье:) Если не поможет, будем еще вспоминать.
Добавлено (05 Декабря 2014, 19:39) --------------------------------------------- Короче смотри... Я правда толком так и не изучил как работают базы, но все же...
Обязательное условие, это назначить полю первичный ключ. Обычно я создаю поле AutoInc и присваиваю ему первичный ключ. В этом столбце никогда не будет повторяющихся значений.
Если к примеру ты присвоишь ключ другому полю, например тому в котором находятся фамилии, то плагин не даст тебе ввести два одинаковых значения. Например если у тебя была строка с фамилией Петров, то во вторую, или десятую строку ты при назначенном первичном ключе не сможешь ни при каких условиях вписать еще одну фамилию Петров.
Если у тебя не назначен первичный ключ ни одному полю, ты сможешь вносить одинаковые записи. Например того же Петрова сможешь подряд записать, но вот тут у тебя и будет проблема при удалении. Как плагин в этом случае работает, я не знаю. Но начинается полтергейст. Я по этому поводу даже по моему на оффоруме вопрос задавал. Записывал видео и показывал там.
Выход. Создаешь поле AutoInc. Можешь конечно и любое другое создать, например со временем. Вряд ли ты успеешь в течении секунды ввести несколько значений. Хотя если вносить программно, то тоже получится билиберда.
Присваиваешь этому полю первичный ключ. Если тебе не надо что бы это поле отображалось, просто прячешь его с глаз долой, и фсе!
Все будет корректно отображаться, вносится и удаляться.
По поводу пустой строки в конце... Попробуй создать таблицу, отобразить ее в прямоугольники, из буфера создай кнопки по умолчанию и добавь с помощью кнопки и полей записи в таблицу.
После когда пустая строка в конце будет, попробуй мышью переместиться на другую запись. Выскочит тоже предупреждение. От этого я избавляюсь примерно следующим образом...
Проверяю строку, если она пустая, то не запускаю команду dbpAddRecord, а просто присваиваю переменным значения и обновляю данные. Если она не пустая, добавляю пустую строку, присваиваю переменным значение, запоминаю номер строки, перехожу к любой другой строке что бы данные обновились, и возвращаюсь на добавленную.
Все так сложно, потому что данные просто так не обновляются при таком подходе. Но точно не буду утверждать, уже не помню.
mishem, огромное спасибо за подробный ответ! Буду пробовать, по результатам отпишусь!
Добавлено (08 Декабря 2014, 09:21) ---------------------------------------------
Цитатаmishem ()
Создаешь поле AutoInc.
Создал поле, назначил ему свойство первичного ключа (хотя слабо понимаю что это такое, первичный ключ). Командой dbpSetColumnOrder показываю в таблице только нужные поля, без этого поля для идентификатора. Но в этом поле запись автоматически производится, я проверял открывая базу (mdb) отдельно в MS Access. Думал проблема ушла, ан нет - теперь удаляет лишнюю строку без всякого предупреждения, раньше хоть ошибку показывал, а сейчас просто молча исчезла еще одна строка (кроме той, что должна была удалиться), и всё... При этом данные в строках совершенно разные, совпадает значение только одного поля. Не говоря уже о поле AutoInc.
Вадим, в таком случае нужен пример, и действия которые ты делаешь.
ЦитатаВадим ()
Но в этом поле запись автоматически производится
Конечно производится. Это счетчик записей. Который увеличивается на единицу. К примеру ты создал пять строк. Счет пошел от 1 до 5. После удалил эти пять строк и опять создал новые. Счет уже пойдет не от одного, а от 6. Как и почему это все происходит, не знаю. Слишком много литературы читать надо. Я себе накачал с расчетом как обычно на "после", но так и не читал.
ЦитатаВадим ()
Думал проблема ушла, ан нет - теперь удаляет лишнюю строку без всякого предупреждения, раньше хоть ошибку показывал, а сейчас просто молча исчезла еще одна строка (кроме той, что должна была удалиться), и всё...
Мож у тебя два раза удаляет? Пример короче нужен.
Отобрази таблицу в прямоугольнике, и смотри что и как происходит. Плюс в отладчик поглядывай. По идеи такое не должно происходить.
ЦитатаВадим ()
хотя слабо понимаю что это такое, первичный ключ
Уникальный идентификатор который не может повторяться. Например код города и номер телефона вместе!, это первичный ключ. А просто номер телефона, не может быть первичным ключом потому что он может повторяться в другом городе. Но если база по одному городу, то номер телефона тоже будет первичным ключом. А все телефоны которые подсоединены к основному, это уже пошли строки, таблицы.... от этого первичного ключа. Это как я понимаю. Позвонил ты Пете, обратился к одной таблице. Позвал Васю, Петя в той таблице будет как первичный ключ, который будет у нас на побегушках, звать Васю, Лену, Федю... А когда кто то из этих троих будет звать нам еще кого то, то они тоже могут стать первичными ключами.
Например ты создал таблицу фамилий. Фамилия будет первичный ключ, которая не может повторяться в этой таблице. Из 1000 фамилий легче же искать одну нужную. Если мы ищем Иванова, то сначала ищем именно Иванова, а после уже смотрим на имя, после на отчество и т.д.
Следующую таблицу мы создаем с Фамилией и Именем у которой связываем поля Фамилия. При найденной фамилии в первой таблице, во второй отобразятся Все фамилии Иванов со всеми Именами. Мы можем создать третью таблицу со всеми существующими именами которые тоже будут как первичный ключ и не будут повторяться. И связываем поле Имя с Полем Имя во второй таблице. При найденом нужном имениво второй таблице отобразяться записи только с нужным нам именем и фамилией. и.т.д
В чем удобство? У нас записей к примеру может быть миллион с одинаковыми фамилиями, именем, отчеством.... Но фамилий к примеру всего 100. Найти нужную фамилию в миллионе дольше чем в 100... Ну думаю смысл понял. Не хочешь читать хелп?
Получается, что "первичный ключ" - это свойство поля, обеспечивающее уникальность его значения в таблице и проявляющееся в автоматическом запрете на повторение значения поля для каждой записи данной таблицы. Так? Кстати, разные таблицы в одной базе мне еще не приходилось использовать, спасибо за идею, приму к сведению.
Не для каждой, а только имено для этого поля. Остальные поля могут повторяться сколько угодно. Это поле идет просто как идентификатор.
ЦитатаВадим ()
Кстати, разные таблицы в одной базе мне еще не приходилось использовать
Ты много теряешь. Зачем тебе тогда про нужна была? Эта версия и хороша тем что в одной базе можно создать сколько угодно таблиц. Не хочешь читать хелп?
Да, очень полезно было бы, только времени на это пока нет. Буду разбираться потихоньку, по мере выявляемых затруднений.
Сейчас сделал демо проблемы, но, по закону подлости, в демо проблема себя не проявила :). Раньше тоже обычно корректно удалялась строка, и лишь иногда сразу две. В общем, попытаю на досуге демо-проект, может быть обнаружу трабл или пойму что в реальном проекте не так. О результатах отпишусь. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
В принципе я так и думал. Ищи косяк в оригинале. Если это закономерность, то определить легко будет. Отладчик запусти пошагово, и увидишь в какой момент удаляется вторая строка.
Но вообще вопрос был по существу. Удаление нескольких строк без первичного ключа действительно наблюдаются. И по моему не только удаление. Были кажется еще проблемы.
Добавлено (05 Февраля 2015, 12:38) --------------------------------------------- Вадим, натолкнулся на хорошую статью по вышеизложенному разговору.