Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

СНОВА INSERT   Найти похожие ветки 

 
Elafor   (2010-01-21 09:44) [0]

Добрый день. Я знаю что уже много тем было по запросам, но чего то толи до меня не доходит, то ли я чего то не правильно делаю...
(Эт все в Access 2003)Необходимо из имеющийся таблицы DBGrid1(Список товаров(Название товара, цена за ед товара, количество товара)) пренести выбранные записи в таблицу DBGrid2(Заказ(Название товара, цена за ед товара, количество товара, Заказываемое количество, цена)).

Я так понял просто перенести данные как из одного stringgrida в другой не получится(если такой способ имеется, то желательно узнать его)

Пробовал через запрос приведенный в одной из тем -
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(" INSERT INTO Table1 (Field1) ");
ADOQuery1.SQL.Add(" VALUES ("+Edit1.Text+")");
ADOQuery1.Open;
BookName.Refresh;
DBGrid1.Repaint;
//MsgBox(Edit1.Text);
end;

Ничего не получилось

Вопросы:
1. Возможно ли как то осуществить перенос данных из одного DBGrida в другой?
2. Как написать SQL запрос INSERT(Перенос записей(не всех) из таблицы Список продуктов в таблицу Заказ) для нескольких полей.
Сразу благодарю всех кто поможет.


 
Elafor   (2010-01-21 09:47) [1]

А немного ошибся вот этот код пробовал -

procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("INSERT INTO Table1 (Field1) VALUES (:pfield1)");
ADOQuery1.Parameters.ParamByName("pfield1").Value := Edit1.Text;
ADOQuery1.ExecSQL;
end;


 
KilkennyCat ©   (2010-01-21 09:49) [2]


> как из одного stringgrida


> из одного DBGrida

это разные компоненты.

> DBGrid1.Repaint;

это нафиг не нужно, ибо все неверно, а именно: в dbgride данных нет, они в dataset, оперировать нужно с ним, с таблицами, с чем угодно но не с гридом (с такими целями).


 
KilkennyCat ©   (2010-01-21 09:51) [3]

и еще: когда говорится о таблице, то говорится о таблице, а не о DBGride.


 
Elafor   (2010-01-21 09:57) [4]

а как тогда оперировать  с dataset чтоб передавать данные из одной таблицы в другую(я просто тока 3 день с этим пытаюсь разобраться, а сроки уже сильно поджимают:( )


 
Сергей М. ©   (2010-01-21 10:12) [5]

> Elafor

Access допускает запросы на вставку такого вида:

INSERT INTO TargetTable(TargetField)
SELECT SourceField FROM SourceTable

Подготовь его по образу и подобию [1] и выполни - по идее должно работать.


 
Anatoly Podgoretsky ©   (2010-01-21 10:26) [6]


> 1. Возможно ли как то осуществить перенос данных из одного
> DBGrida в другой?

В DBGrid нет данных


 
Anatoly Podgoretsky ©   (2010-01-21 10:27) [7]

Какой еще ADOQuery1.Open;
Выбросил бы ты подобру, поздорову этот ADOQuery, замени на AdoCommand


 
Elafor   (2010-01-21 10:42) [8]


> Anatoly Podgoretsky

А в AdoCommand можно делать запросы которые параметры будут брать из Edit"ов?


 
Sergey13 ©   (2010-01-21 10:58) [9]

> [4] Elafor   (21.01.10 09:57)
> а сроки уже сильно поджимают:( )

Неужели заказчик требует готовую систему для торговли?
8-)

> [0] Elafor   (21.01.10 09:44)
> DBGrid1(Список товаров(Название товара, цена за ед товара, количество товара))
> DBGrid2(Заказ(Название товара, цена за ед товара, количество товара, Заказываемое количество, цена)).

ИМХО по любому двойку поставят. Хоть напишешь хоть не напишешь.


 
Elafor   (2010-01-21 11:08) [10]


> Sergey13

Заказчик - Преподаватель(Я в Базах особо не когда не разбирался, а препод в программирование не чем помочь не может, ибо преподает Субд)
Задание звучало так - создать тока иллюзию работающей системы.
Иллюзия была сделана, но с БД соприкасалась тока в плане заимствования данных из таблиц.
Видимо у нас с преподом разные понятия о иллюзии - и теперь необходимо чтоб прога еще и сохраняла данные в таблицу. вот из за этого образовался камень придкновения.
З.Ы. Сессия уже 2ю неделю идет, а курсовой, собственно без проги, так и нет


 
Игорь Шевченко ©   (2010-01-21 11:09) [11]

ну а мы-то тут причем, если ты ни в базах, ни в программировании ?


 
Anatoly Podgoretsky ©   (2010-01-21 11:09) [12]


> ИМХО по любому двойку поставят. Хоть напишешь хоть не напишешь.

Я думаю, все таки альтернативу предложат, вместо института.


 
Elafor   (2010-01-21 11:18) [13]

Ну люди извините, просто очень не хочется альтернатив, и я же тока учусь, а все преподы посылают к преподу по СУБД, а он дамой, потому что программированием не занимается.


 
Elafor   (2010-01-21 11:18) [14]

*домой


 
Sergey13 ©   (2010-01-21 11:20) [15]

> [10] Elafor   (21.01.10 11:08)
> Задание звучало так - создать тока иллюзию работающей системы.

Да ладно врать то?
Написал бы прямо: весь семестр пил пиво и зависал по клубам - помогите разобраться. А то препод в программировании ничего не понимает потому что СУБД-шник.


 
Elafor   (2010-01-21 11:28) [16]

Я пиво и спиртное почти не пью, клубы исключено - я очень домашний :),
препод действительно СУБДшник, но он просто еще очень требовательный к деталям, а по предмету Основы проектирования информационных систем  очень муторно делать систему, если ты даже не догадываешся как это в действительности работает:(


 
Elafor   (2010-01-21 11:30) [17]

и еще как должна называться прога в которой на 80% кнопок должны быть заглушки?


 
Anatoly Podgoretsky ©   (2010-01-21 11:34) [18]


> а все преподы посылают к преподу по СУБД

Правильно посылают, но ты видимо вопросы задавать не умеешь.


 
Anatoly Podgoretsky ©   (2010-01-21 11:35) [19]

> Elafor  (21.01.2010 11:30:17)  [17]

Глушитель


 
Sergey13 ©   (2010-01-21 11:37) [20]

> [16] Elafor   (21.01.10 11:28)
> а по предмету Основы проектирования информационных систем
> очень муторно делать систему, если ты даже не догадываешся
> как это в действительности работает:(

Насколько я помню институт - сначала читается курс лекций с семинарами, а ПОТОМ дается на выполнение курсовой проект. И если ты "даже не догадываешся как это в действительности работает", то значит ты этих лекций не слушал.

> [17] Elafor   (21.01.10 11:30)
> и еще как должна называться прога в которой на 80% кнопок
> должны быть заглушки?
Значит то, на чем ты встал входит в другие 20%. Не меню же тебе дали разрабатывать.

Впрочем это уже лирика.


 
Elafor   (2010-01-21 11:39) [21]

Да я же не спорю что я много чего не умею, но где же мне в такой ситуации этому научится - не чего дельного кроме этого форума не нашел...


 
Anatoly Podgoretsky ©   (2010-01-21 11:40) [22]

Институт более дельное, чем форум.


 
Elafor   (2010-01-21 11:42) [23]

в том то и дело что лекции не читали по программированию, читали по работе с Rational Rose(что я уже сделал)на счет программы - подразумевается что меня обучили основам нескольких языков программирования, а как ты будеш писать дело твоё


 
Плохиш ©   (2010-01-21 14:47) [24]

Видно не твоё это, не твоё.


 
Дмитрий Белькевич   (2010-01-21 23:59) [25]

>(Эт все в Access 2003)Необходимо из имеющийся таблицы DBGrid1(Список товаров(Название товара, цена за ед товара, количество товара)) пренести выбранные записи в таблицу DBGrid2(Заказ(Название товара, цена за ед товара, количество товара, Заказываемое количество, цена)).

Разбиваем задачу на части.
1. Найти выбранные в гриде записи.
2. Добавить их в нужную таблицу.
3. Обновить второй грид, перечитав данные из таблицы.

>в том то и дело что лекции не читали по программированию

Не читали? Или не слушал? Если первое - то ВУЗ - г-но, если второе - то сам себе виноват.


 
Anatoly Podgoretsky ©   (2010-01-22 08:54) [26]

То Военное Учебное Заведение, будет учить как портянки мотать.


 
KilkennyCat ©   (2010-01-22 10:35) [27]


> будет учить как портянки мотать.

Зачем учить, можно на форуме спросить.


 
Elafor   (2010-01-22 10:41) [28]


> Дмитрий Белькевич

Уточнение - по программированию с использованием данных из БД не читали

В конце концов это раздел - Начинающие

Я написал такой код -

   
DataModule5.ADOCommand1.CommandText:="INSERT INTO Заказ([Название продукта], [Цена за ед товара], [Количество на складе], [Код завхоза]) VALUES(:NameT, :ByeT, :ValT, :Zavhoz);";
   DataModule5.ADOCommand1.CommandType:=cmdText;
   DataModule5.ADOCommand1.Parameters.ParamByName("NameT").Value:= DBEdit1.Text;
   DataModule5.ADOCommand1.Parameters.ParamByName("ValT").Value:= DBEdit2.Text;
   DataModule5.ADOCommand1.Parameters.ParamByName("ByeT").Value:= DBEdit3.Text;
   DataModule5.ADOCommand1.Parameters.ParamByName("Zavhoz").Value:= DBEdit4.Text;
   DataModule5.ADOCommand1.Execute;


В DBEdit"ах хранятся значения из первой таблицы, Заказ - вторая таблица, в которую я переношу данные из первой

Пишет ошибку - class EOleException - Несоответствие типов данных в выражении условия отбора.

но я все поля в БД([Название продукта], [Цена за ед товара], [Количество на складе], [Код завхоза]) проверил - типы одинаковые, что это может быть?


 
Elafor   (2010-01-22 10:44) [29]

Еще у меня при отображение формы в которой я выбираю записи которые необходимо переносить, я удаляю все записи из таблицы заказ, вот так -

procedure TForm3.FormShow(Sender: TObject);
begin
 DataModule5.ADOCommand1.CommandText:="DELETE* FROM Çàêàç;";
   DataModule5.ADOCommand1.Execute;
end;


 
Elafor   (2010-01-22 10:45) [30]

*Çàêàç - Заказ


 
KilkennyCat ©   (2010-01-22 12:04) [31]

я бы не стал такие глобальные вещи вешать на шоу формы. Оно далеко не однократно может быть вызвано. Повесь это там, где делаешь вызов формы.


 
Anatoly Podgoretsky ©   (2010-01-22 12:06) [32]

> Elafor  (22.01.2010 10:41:28)  [28]

> В конце концов это раздел - Начинающие

А ты как к ним относишься?


 
Anatoly Podgoretsky ©   (2010-01-22 13:07) [33]


> я бы не стал такие глобальные вещи вешать на шоу формы.
> Оно далеко не однократно может быть вызвано. Повесь это
> там, где делаешь вызов формы.

Нечего страшного, укаолько не удаляй больше не удались. Просто будут лишнии вызовы


 
KilkennyCat ©   (2010-01-22 13:19) [34]

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


 
Elafor   (2010-01-22 15:31) [35]

Ладно, с переносом данных из одной таблицы в другую разобрался..вроде.


> KilkennyCat ©   (22.01.10 12:04) [31]
> я бы не стал такие глобальные вещи вешать на шоу формы.
> Оно далеко не однократно может быть вызвано. Повесь это
> там, где делаешь вызов формы.

Спасиб, сразу не подумал, теперь исправил.


 
Elafor   (2010-01-22 16:38) [36]

Еще вопрос:
Чтобы переместить курсор на последнюю запись надо использовать     DataModule.ADOTable.Last, а есть какая нибудь процедура чтоб определять является ли выбранная запись последней?

Я нашел как вывести количество всех записей, думал с помощью этого буду определять, но вот как определить текущую не понял.


 
Anatoly Podgoretsky ©   (2010-01-22 16:54) [37]

Нет.
Текущую определять не надо она текущая


 
Anatoly Podgoretsky ©   (2010-01-22 16:55) [38]

> Elafor  (22.01.2010 16:38:36)  [36]

Раз ты можешь переместиться, то что мешает ее запомнить?


 
Elafor   (2010-01-22 21:07) [39]

Спсиб за советы, я ее сделал!!! УРА УРА УРА!



Страницы: 1 вся ветка

Текущий архив: 2010.03.28;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.01 c
15-1263151091
Дмитрий С
2010-01-10 22:18
2010.03.28
String в delphi2010


15-1262970823
Кто б сомневался
2010-01-08 20:13
2010.03.28
Уровень жизни рейтинг International Living.


15-1262873481
anton773
2010-01-07 17:11
2010.03.28
Пожиратель траффика!!!


3-1237289266
Yurikon
2009-03-17 14:27
2010.03.28
Количество записей в TADOTable


15-1262285952
Anatoly Podgoretsky
2009-12-31 21:59
2010.03.28
С Новым Годом!