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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 14:40   #1
tanushka_a1990
Пользователь
 
Регистрация: 03.06.2010
Сообщений: 20
По умолчанию DBGrid

Здравствуйте! Помогите пожалуйста, что то не могу врубиться! Я в общем в вожу в Edit-е название препарата, он мне его выдает в DBGrid, потом я нажимаю на кнопку добавить, пишу опять в Edit-е, а он мне DBGrit-е заменяет,а надо чтоб он сохранял предыдущее и добавлял сколько надо!База данных храниться на SQL Server 2005.
tanushka_a1990 вне форума Ответить с цитированием
Старый 03.06.2010, 15:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

э-э-э Я так понимаю тебе нужно выполнить SQL команду INSERT чтоб добавить в базу запись?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2010, 15:06   #3
tanushka_a1990
Пользователь
 
Регистрация: 03.06.2010
Сообщений: 20
По умолчанию

нет не добавить, а вытащить из БД
вот пример мой (для кнопки принять), а надо еще добавить (и тут он должен добавлять и не заменять записи в DBGrit-е)
Код:
DBGrid1.DataSource:=Form2.DataSource5;
  DBGrid1.Visible:=true;
  Form2.ADOQuery5.close;
  Form2.ADOQuery5.SQL.clear;
  Form2.ADOQuery5.SQL.Add('select *');
  Form2.ADOQuery5.SQL.Add('from MyTable1');
  Form2.ADOQuery5.SQL.Add('where naimenovaniee LIKE '''+Edit1.Text+ '''');
  Form2.ADOQuery5.open;

Последний раз редактировалось Stilet; 03.06.2010 в 16:19.
tanushka_a1990 вне форума Ответить с цитированием
Старый 03.06.2010, 15:56   #4
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Как я понимаю...
Что и куда он должен добавить?
Вы работаете все время с одним и тем же источником данных.
Мало того как я понимаю Вы каждый раз перестраиваете выборку в соответствии с тем что в edite.
Ничего у Вас добавляться не будет.
Т.к. отсутствует некоторый промежуточный элемент(куда надо сохранить).
Примерно должно быть что-то такое
Вводим что ищем
В дата сете A нашли запись
Добавили в дата сет B.
Снова вводим что ищем.
Т.е. как минимум 2 дата сета.

Либо правильно сформулируйте вопрос.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 03.06.2010, 16:15   #5
tanushka_a1990
Пользователь
 
Регистрация: 03.06.2010
Сообщений: 20
По умолчанию

Я произвожу продажу медикаментов, ввожу в Edit название препарата, он выводиться в DBGrit-е, я же не могу по одному товару отпускать, у меня имеется кнопка добавить (тут я должна вводить новое значение в Edit и по нажатию кнопки Принять - должен выводиться второй препарат, а он его просто заменяет) так вот как сделать так чтобы DBGrit создавал новую строку и сохранял предыдущую! А как создать этот промежуточный элемент куда бы все сохранялось?
tanushka_a1990 вне форума Ответить с цитированием
Старый 03.06.2010, 16:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и тут он должен добавлять и не заменять записи в DBGrit-е
Это не возможно. DBGrid не рассчитан на добавление. Любой другой грид, не умеющий работать с БД может такой финт позволить, но гриды, у которых есть зависимость от БД компонентов всегда работают с целостным набором.

В принципе (дурная идея) ты можешь дописать к уже имеющемуся запросу (который открыт в гриде) через union еще один, тогда эти два запроса сольются - что будет выглядеть как добавление, но это изврат.

Цитата:
так вот как сделать так чтобы DBGrit создавал новую строку
Ну так всетки тебе нужно именно внести в базу новую запись.
Цитата:
и сохранял предыдущую!
А ты не пользуй DBEdit. Вместо него кинь обычный эдит и по кнопке добавляй из него новую запись методом Append или SQL командой INSERT

DBEdit призван редактировать поле текущей записи, а не добавлять.
Другое дело если ты вызовешь метод Append, а потом уже внесешь информацию в DBEdit тогда вновь созданная запись заполнится новыми данными.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2010, 16:35   #7
tanushka_a1990
Пользователь
 
Регистрация: 03.06.2010
Сообщений: 20
По умолчанию

а через DBNavigator добавляется же строка, в нее можно вывести данные?
tanushka_a1990 вне форума Ответить с цитированием
Старый 03.06.2010, 19:40   #8
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

DBNavigator добавляет новую запись но при селекте он её ни куда не сохраняет.
Этот вариант не твой и даже не останавливайся на этом.
Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так всетки тебе нужно именно внести в базу новую запись.
Как я понимаю не надо новой записи во всяком случае в том дата сете который построен селектом.
Как я понимаю необходимо сформировать некий временный дата сет с набором препаратов для отпуска.
Для этого. Если нет необходимости хранить данные конкретного заказа то можно просто создать некую таблицу в памяти(если интересно то могу подсказать чем воспользоваться).
Или можно использовать stringgrid.
Если есть необходимость в хранении то стоит создать таблицу и в неё инсертить идентификаторы(потом по ним доставать нужные данные).
И кстати тебе стоит изменить схему поиска.
Искать не селектом с использованием Like.
А посмотреть в сторону функций lookup и locate.
Ну или на худой конец использовать фильтры.
Ибо ты все время таскаешь данные с сервака БД(кушаешь трафик).
Гораздо проще получить набор данных один раз и в нем уже плавать и колупаться.

И да DBGrid для отображения данных, а не для управления ими.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)

Последний раз редактировалось rdama; 03.06.2010 в 19:53.
rdama вне форума Ответить с цитированием
Старый 04.06.2010, 10:26   #9
Kemperok
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 25
По умолчанию

датасет1 - (таблица данных - справочник) их получение
датасет2 - (таблица данных - "рабочая") инсерт, эдит, делет
ты обрисуй структуру своей БД.
дбгрид - отображение данных
Kemperok вне форума Ответить с цитированием
Старый 04.06.2010, 11:24   #10
tanushka_a1990
Пользователь
 
Регистрация: 03.06.2010
Сообщений: 20
По умолчанию

да имеется ADOConnection1 подключенный к моей БД,ADOQuery1,DataSourse1 и DBGrid1. Все подключено все работает, вот только я могу вытащить из БД одну запись, а нужно много и чтоб одна другую не заменяла!
tanushka_a1990 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение даннах из dbgrid в dbgrid Hobbit_88 БД в Delphi 7 10.06.2009 13:33
перенос данных из DBGrid в DBGrid KingSize БД в Delphi 17 24.04.2009 09:30
DBGrid DOLBY Компоненты Delphi 29 08.10.2008 00:05
DBGrid+DBGrid Alex_666 БД в Delphi 11 19.06.2008 08:43