Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2007, 12:49   #1
Canadec
Пользователь
 
Регистрация: 17.07.2007
Сообщений: 12
По умолчанию Сохранение нескольких записей из DbGrid в базу

На форме имеется компонент Dbgrid, туда вносится разная инфа типа
№ Наимен. ед.изм. кол цена сумма
1. Гвозди кг. 10 1000 10000
...
5. Кирпич шт. 1000 300 300000
....
так помимо этого Dbgrid на форме имеется остальные компоненты типа edit или мемо
Думаю сохранять все при помощи
query.close;
query.clear;
query.sql.add('insert into ...');
query,open;
Имеется таблица в которую заносятся все эти поля, так вот самая загвоздка с инфой в Dbgrid. Как занести ее в базу(Interbase 6.0) одной строкой, или использовать еще одну таблицу и сделать там что-то вроде уникального идентификатора при помощи которого будут связываться эти таблицы. Или есть способ с индексами.
Заранее спасибо!
Canadec вне форума Ответить с цитированием
Старый 04.09.2007, 14:24   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Странно... переносить данные из грида в таблицу....
Обычно работают с таблицей и в гриде видят результат. А не наоборот.
Кстати, после query.sql.add('insert into ...'); нужно не query.open, а query.ExecSQL.
_SERGEYX_ вне форума Ответить с цитированием
Старый 04.09.2007, 15:38   #3
Canadec
Пользователь
 
Регистрация: 17.07.2007
Сообщений: 12
По умолчанию

В гриде с помощью кнопки заносим данные из другой таблы,в начале написано что и чего заполняем, а потом это все надо как-то сохранить.
Вот здесь-то и заключается вся проблема, как сохр. неск. записей из грида. Вот и думай использовать ли доп.табл. для самого грида или как-то выкрутится
Canadec вне форума Ответить с цитированием
Старый 05.09.2007, 22:58   #4
rubi
Пользователь
 
Регистрация: 01.09.2007
Сообщений: 35
По умолчанию

Может просто используя Lookup-поля нужные данные занести в какую то переменную, а потом используя параметры использовать IBUpdateSQL. Примерно так:
//если dbgrid заполняется из query1 например
a:=query1Naimenovanie.value;
b:=query1Kolichestvo.value;
...
а потом связываем query2 для таблицы которую заполняем(если это не та же таблица, к-я в dbgrid'e и которая из query1) с каким нибудь UpdateSQL и пишем :
ibquery2.close;
ibquery2.open;
ibquery2.insert;
ibquery2PoleDlyaZapolnenia.Value:=a +b+...;
ibquery2.post;
rubi вне форума Ответить с цитированием
Старый 06.09.2007, 02:12   #5
Tokolist
Пользователь
 
Аватар для Tokolist
 
Регистрация: 04.09.2007
Сообщений: 19
По умолчанию

не совсем понимаю что именно нужно... т.е. само ТЗ
есть такие варианты

1. без обращения к серверу: храним гдето все данные (даже не важно где, да хоть массив какой-нибудь) потом, когда уже нужно все сохранять, циклом и INSERT INTO вставляем все данные в базу
2. сразу же после вставки делаем запрос и коммитим трансакцию
3. коммитим трансакцию, только при определенных условиях (т.е. например добавили записи и если все ОК, то коммитимся, а если нет то откат)
4. вообще не храним все поля, а храним только значения ключей из первой таблицы в массиве, а потом что-то типа
Код:
INSERT INTO "table2" ("field1", "field2") SELECT "field1", "field2" FROM "table1" WHERE "id" IN (...)
как все это организовать есть море вариантов... конечно же используем связку TIBQuery, TIBTransaction, TIBUpdateSQLW и т.д.
Tokolist вне форума Ответить с цитированием
Старый 06.09.2007, 14:26   #6
Prisian
Пользователь
 
Регистрация: 23.04.2007
Сообщений: 38
По умолчанию

Попробуй DBNavigator. Поставь в Гриде ReadOnly в False. потом щёлкни на плюсике, занесется в таблицу новая запись, потом занеси инфу в поля. Когда всё занесешь, нажми на галочку. Вот и всё, данные из грида занесены в базу.
Prisian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сохранение нескольких излбражений в один файл.. как? IGWI Мультимедиа в Delphi 7 18.11.2008 23:16
открытие нескольких файлов valyan Общие вопросы Delphi 10 17.07.2008 20:27
Решение нескольких задач ViNcHeStEr Помощь студентам 4 05.07.2008 17:57
Поиск нескольких записей VenMaster БД в Delphi 1 14.06.2008 22:48
печать нескольких листов checkbox Microsoft Office Excel 2 16.01.2008 00:50