|
|
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. В Обычный едит вставляет, а в грид не хочет ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 12:43 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
DBGridEh1 у вас привязан к датасету, который не в едит ор инсерт моде. Отсюда и ошибка. ЗЫ странный у вас какой то подход в работе с DB-aware компонентами, иль я чё не понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 12:49 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
Возможно и странный подход но другого подхода найти не смог! Этот квери возращает одну лишь всего запись для вставки в поля грида уже определенных значений из другой таблицы! А сам грид связан с другим датасетом! Пробовал все где видел в свойствах ЕДИТ или ИНСЕРТ поставить в тру (тоже странный подход) )) Но никаких сдвигов ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 12:55 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
OraQuery4->First(); OraQuery4->Edit(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 12:56 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
zalexakaстранный у вас какой то подход в работе с DB-aware компонентами, иль я чё не понимаю а в чем именно выражается странность? сорри, просто у меня примерно тот же подход. и если он не оптимальный, хотелось бы знать =)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 12:57 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
maxtarВозможно и странный подход но другого подхода найти не смог! Этот квери возращает одну лишь всего запись для вставки в поля грида уже определенных значений из другой таблицы! А сам грид связан с другим датасетом! Пробовал все где видел в свойствах ЕДИТ или ИНСЕРТ поставить в тру (тоже странный подход) )) Но никаких сдвигов ( сдвиг произойдёт когда вы перед: Код: plaintext Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 13:00 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
автор OraQuery4->First(); OraQuery4->Edit(); Никаких изменений! Да и Не причем тут это! Квери тока возврщает строку которая в обычные Едитбокс вставляется а в грид не хочет! Причем руками если изменять данные в гриде то ничего не говорит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 13:01 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
2Zalexaka Сдвиг произошол... ошибка больше не вылетает... только тупит както. Курсор с часами и надписью скуэль висит, все нажимается работает, но через некоторое время вылетает с другой ошибкой, и в памяти до 48мегов вырастает... ->Edit() Может както нужно закрывать? А вообще Есть ли другой способ сделать то что я делаю. Недавно писал, видимо не совсем понятно написал. Нужно заполнять грид наполовину из другой таблицы, и получается что при каждой новой строке приходится обращаться к базе. Как это при плохом коннекте то будет? Вопросов куча..... ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 13:31 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
maxtarВозможно и странный подход но другого подхода найти не смог! Этот квери возращает одну лишь всего запись для вставки в поля грида уже определенных значений из другой таблицы! А сам грид связан с другим датасетом! Хм. Видите ли, есть паттерн Model - View - Controller. Так вот, DBGrid - это View, а Ваши изменения данных нужно выполнять в модели, то есть в DataSet-е, питающем грид. maxtarА вообще Есть ли другой способ сделать то что я делаю. Недавно писал, видимо не совсем понятно написал. Нужно заполнять грид наполовину из другой таблицы, и получается что при каждой новой строке приходится обращаться к базе. Как это при плохом коннекте то будет? Если сейчас Вы сформулировали хорошо - то правильным будет написать SQL-запрос, который возвращает нужный Вам набор "слитых" записей из двух таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 15:20 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
автор Хм. Видите ли, есть паттерн Model - View - Controller. Так вот, DBGrid - это View, а Ваши изменения данных нужно выполнять в модели, то есть в DataSet-е, питающем грид. Это понятно. Вопрос в том, что в грид нужно ввести какието данные чтобы записать в таблицы, половина данных должна вставиться из другой таблицы в зависимости от значения первого поля, но строго одна строка, другая половина вводится вручную и высчитывается из того что ввели вручную и из того что вставилось из второй таблицы! Ух! Запутал наверное опять. Вот, а всталять тем образом, которй я изложил выше, не дает. авторЕсли сейчас Вы сформулировали хорошо - то правильным будет написать SQL-запрос, который возвращает нужный Вам набор "слитых" записей из двух таблиц. Так сейчас и есть! Информация из этого запроса служит для рассчета значений других ячеек в соответствии с тем что введено вручную! А получается что для каждой строки будет отсылаться запрос на сервер (связь может быть модемная). Вопрос в том сколько будет ждать пользователь после выбора значения! Большое спасибо за ответы! И извините если окончательно запутал ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 15:51 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
Господа, в общем один вопрос. Как вставить в ячейку грида значение из другого датасета, не в базу, не в датасет, просто чтобы это значение отображалось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 16:49 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
maxtar softwarerХм. Видите ли, есть паттерн Model - View - Controller. Это понятно. Вопрос в том, что в грид нужно ввести какието данные чтобы записать в таблицы, Уже не так. Данные в любом случае вводятся в модель - в DataSet. Он может получить их запросом, после чего в них могут быть внесены изменения, методом Edit/Assignment/Post. Давайте я попробую описать две вещи, а Вы решите, какую из них Вы имеете в виду. Во-первых, в лучшем случае Вы имеете в виду операцию lookup. Выглядит это примерно так: у Вас есть данные в гриде, Вы их редактируете, и нажимаете, допустим, на кнопку "Договор". Выскакивает список договоров, Вы выбираете нужный, и в результате в Ваши данные подставляются id договора, а также куча вторичных полей - номер, тип, контргагент, дата и так далее - все, что Вы хотите показать в гриде по этому договору. Делается это именно что описанным выше образом - Edit(если нужен) -копирование значения полей - Post (если нужен). В худшем же случае Вы имеете в виду следующее: Вам нужно получить сводную информацию (например, из таблиц "Договор" и "Контрагент"), Вы сделали запрос к таблице "Договор" и теперь к каждой ее строке хотите присобачить результат запроса к таблице "Контрагент". Это делается именно что sql-запросом к двум таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 16:59 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
maxtarГоспода, в общем один вопрос. Как вставить в ячейку грида значение из другого датасета, не в базу, не в датасет, просто чтобы это значение отображалось? Никак. DBGrid отображает данные, находящиеся в датасете. Точка. На самом деле, конечно, можно. Есть много инструментов для решения задач. Опишите задачу, которую Вы решаете - не "как вставить", а что Вы вообще хотите сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 17:01 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
авторВо-первых, в лучшем случае Вы имеете в виду операцию lookup. Выглядит это примерно так: у Вас есть данные в гриде, Вы их редактируете, и нажимаете, допустим, на кнопку "Договор". Выскакивает список договоров, Вы выбираете нужный, и в результате в Ваши данные подставляются id договора, а также куча вторичных полей - номер, тип, контргагент, дата и так далее - все, что Вы хотите показать в гриде по этому договору . Почти! Ввод товаров в накладную: Есть грид, но он пустой. В первом поле находится комбобокс, значения пиклиста которого загоняются при открывании формы запросом к таблице товаров (в которой как раз и находятся все характеристики цена, производитель и тд) и выбором одного столбца с наименованием. Пользователь вводя в накладную новую позицию выбирает из этого комбобокса значение, тоесть наименование товара, и после того как он выходит из ячейки, другие ячейки грида, такие как цена за единицу, имя упаковки, сколько штук в упаковке и тп, должны принять значения соответстнно записи в таблице с товарами. А еще есть такие ячейки, в которые нужно вводить руками, например "количество заказываемого товара", и после ввода в это поле считается ячейка общей суммы за эту позицию, а уже потом можно заносить все в таблицу. Таблиц тут три. Первая "накладная" содержит информацию о самой накладной, такую как: ее номер, кому, от кого, и т.д. Вторая "запись в накландой" содержит как раз товары из таблицы товаров, и связанная с "накладная" по полю номера накладной. Вот такая вот ситуаци! Очень благодарен Вам за участие в решении моей проблемы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 17:56 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
Тогда ситуация такова. На уровне "для чайников" борландеры предлагают для этого хрень, которая называется lookup fields. Делается она примерно так: делаете dataset с запросом к таблице товаров, а в dataset-е позиций накладной в визуальном редакторе создаются эти самые поля, которым указан lookup dataset и что и как из него выбирать. Механизм вообще-то дрянной, переоткрывающий lookup dataset по каждому чиху и соответственно, сильно тормозящий. В то же время, полагаю, его можно использовать, если данные из таблицы товаров загнать в память - например, использовав TClientDataSet. Более же обычное решение - именно что то, что я написал в предыдущем письме. То есть примерно то же, что делаете Вы, но работа непосредственно с DataSet-ом. И нужно обратить внимание на состояние датасета и логику, которую Вы хотите "зашить". Тут есть два варианта: либо операция "выбрать товар" должна быть недоступна, пока не начато редактирование, либо же код должен проверять состояние датасета, и при необходимости делать Edit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 18:26 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
С гридом все понятно... Но так и остался вопрос открытым, как присваивать ячейкам значения не изменяя набора данных. Так сказать подготовить данные к вставке в таблицу! Можно ли для этих целей использовать StringGrid? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2004, 14:49 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
Все нормально... изменяя ОраКвери сам! Просто код висел на отрисовке ячейки и он вис... Повесил на ОнАпдэйт, теперь тормозит сам запрос, тоесть выполняется, но с предыдущим значением Where. Собственно вот этот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. И еще один вопрос! Как скажется на скорости работы обращение к базе при вводе каждой новой строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2004, 17:14 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
Не знаю, как делает большинство, а я делаю примерно так: 1) При добавлении нового материала (или изменении существующей позиции) вызывается диалоговое окошко, в котором заполняются (изменяются) необходимые реквизиты . В поле, где необходимо указать материал, вводится сторка (контекстная). Далее по этому контексту строки выбирается список материалов (если в комбобокс грузить сразу весь справочник, то будет тормозить, если справочник большой) из которого пользователь выбирает необходимый. При выборе материала догружаются доп данные по материалу в поля диалогового окошка (через sql-запрос) 2) Для сохранения данных в БД использую хранимую процедуру, в которую передаю необходимые параметры. В хранимой процедуре также осуществляется необходимый контроль за коррекностью введенных данных. 3) В случае успешной транзакции изменения данных, обновляю рекордсет (ну и грид тоже с последующим позиционированием на добавленной(измененной) записи) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 10:51 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
2 Alex_VC Все тоже самое, только в гриде! Вопрос в том как долго будут именно догружаться при, допустим, плохой модемной связи (~24 кб\с). Очень интересно было бы услышать от Вас (если конечно используется удаленное соединение). Мне кажется что это наиболее правильно... Но тетеньки за 4 года настолько привыкли, что по иному, мою программу не имеет смысла доводить до конца. 2 all Вы уж меня простите но вопрос за вопросом. На рисунке (если присоединился) Поле 1 является первичным ключом для таблицы с общей информации по накладной, Поле 2 это форейн кей в таблице с записями в накладной. При добавлении новой накладной сначала вводится информация общая, а позиции вводятся в грид. Проблема в том что общая информация не заносится в таблицу с накладными, в то время как при вводе в грид записи вставляются сразу, из-за чего возникает нарушение целостности по общему ключу, типа нет записи с таким NAKL_NUM. Пуду очень благодарен за советы! И извените если все это флуд! Спросить больше не укого! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 11:33 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
я не понел ты добавление прямо на гриде делаеш ? лучше всего по моему метод который описал Алекс_ВС .. а грид я бы на твоем месте только для чтения сделал бы .. поменьше проблем будет ;) (можно дополнительно еще и таблицу только для чтения сделать но через модемную связь думаю добавить новые данные тогда медленнее будуть .. и тем более нужно кешировать данные а потом апдейт сделать ;)) с уважением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 13:20 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
авторя не понел ты добавление прямо на гриде делаеш ? Да! Вот и возникают вопросы. Это совсем плохая практика? Лучше делать диалоговое окно на каждую строку? А в нем уже все подсчеты делать? Вообще, так делает ктонибудь? Ой ужас сколько вопросов.... Там ведь что вводится руками так это только количество коробок, откуда геморой может быть? Все, я окончательно запутался! Может кто скажет как реализуется данная задача. Она ведь, на мой взгляд, самая распространенная! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 14:13 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
maxtarС гридом все понятно... Но так и остался вопрос открытым, как присваивать ячейкам значения не изменяя набора данных. Так сказать подготовить данные к вставке в таблицу! Можно ли для этих целей использовать StringGrid? Можно, но редко когда нужно. Поскольку именно набор данных представляет кэш, готовящий данные к вставке в удаленную таблицу. Можно повторить этот код самостоятельно, но смысла в этом я не вижу. maxtarИ еще один вопрос! Как скажется на скорости работы обращение к базе при вводе каждой новой строки? При вводе - скорее всего, непринципиально. Проблемы будут при обращениях для отображения информации. Кстати, я вроде бы уже говорил насчет параметров. Так Вы здорово тормозите сервер и закладываете возможность ошибки, включая взлом Вашей программы через SQL Injection). maxtarДа! Вот и возникают вопросы. Это совсем плохая практика? Лучше делать диалоговое окно на каждую строку? Зависит от данных и требуемого функционала. В общем, чем больше навешано в этом месте - тем больше смысла делать отдельное окно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 16:22 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
я бы сделал отдельно ;) проблем будеть меньше ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 07:46 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
Насчет скорости работы по удаленному (модемному) соединению: тут либо надо использовать что-то типа терминального сервера: у пользователя установлен терминал, запускающий Вашу программу на сервере (по сетке гоняются только экраны, все вычисления - на сервере), либо написать свое приложение типа клиент-сервер с оговоренными выше способностями, ну или организовать это дело в виде web-приложения (все формы - в виде страничек, - обработка - на сервере). Все это - в режиме реального времени. Можно организовать оффлайн (например, через какие-то буфера, которые потом подкачиваются в основную БД). Но здесь возникает проблема с синхронизацией данных (долговременные транзакции, их обработка и т.д.). Вообщем, заморочки будут везде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 10:45 |
|
||
|
"Database not in edit or insert mode" Error ((
|
|||
|---|---|---|---|
|
#18+
кстати можеш для клиент сервера юзать Interbase обычно поставляется вместе с бильдером какая то версия .. но если подключений будеть больше 5 нужна будеть тебе лицензию приобрезти.. из того что сами делали ;) или какую то прогу писали что бы обработал запросы на стороне сервера (обычно) редко как страницы на веб сервере ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 11:17 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32838089&tid=2033935]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 357ms |

| 0 / 0 |
