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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2014, 01:58   #1
2rei
 
Регистрация: 18.09.2014
Сообщений: 3
По умолчанию Запись строк в столбцы другой таблицы

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


Код:
procedure TForm1.Button9Click(Sender: TObject);
var
idord1,idord2,idord3,idord4,repid, repid2,repid3,gas1,g :integer;
ordpr1, ordpr2, ordpr3,ordpr4: Currency;
numb1,numb2,numb3,numb4 :Currency;
  I: Integer;
begin
repid:=0;
repid2:=0;
helpQuery2.Parameters.Refresh();
helpQuery2.SQL.Clear;
helpQuery2.SQL.Add('SELECT count(*) as f2 FROM Ordt'); //
helpQuery2.open;
gas1:=helpquery2.FieldByName('f2').AsInteger;  //count id
helpQuery2.close;
//ordtable2.Requery();
  ordtable2.First;// 1 row
  idord1:=ordtable2.FieldByName('Name').Asinteger;// name catrgory
  ordpr1:=ordtable2.FieldByName('Price').Ascurrency; //price2 in report
  repid:=ordtable2.FieldByName('Reportid').Asinteger; //repid report table id
  numb1:=ordtable2.FieldByName('Col').Ascurrency;  //koli4estvo
  ordtable2.RecNo:=2;
  idord2:=ordtable2.FieldByName('Name').Asinteger;// name catrgory
  ordpr2:=ordtable2.FieldByName('Price').Ascurrency; //price2 in report
  repid2:=ordtable2.FieldByName('Reportid').Asinteger; //repid report table id
  numb2:=ordtable2.FieldByName('Col').Ascurrency;  //koli4estvo
  ordtable2.RecNo:=3;
  idord3:=ordtable2.FieldByName('Name').Asinteger;// name catrgory
  ordpr3:=ordtable2.FieldByName('Price').Ascurrency; //price2 in report
  repid3:=ordtable2.FieldByName('Reportid').Asinteger; //repid report table id
  numb3:=ordtable2.FieldByName('Col').Ascurrency;  //koli4estvo
helpQuery2.SQL.Clear;
helpQuery2.SQL.Add('INSERT INTO Orders (Dateord,Prod1,Count1,Price1,Prod2,Count2,Price2,Prod3,Count3,Price3) 
 Values(dateord, prod1, count1, price1,prod2,count2,price2,prod3,count3,price3)');
helpQuery2.Parameters.ParamByName('dateord').Value:=datar;
helpQuery2.Parameters.ParamByName('prod1').Value:=idord1;
helpQuery2.Parameters.ParamByName('count1').Value:=numb1;
helpQuery2.Parameters.ParamByName('price1').Value:=ordpr1;
helpQuery2.Parameters.ParamByName('prod2').Value:=idord2;
helpQuery2.Parameters.ParamByName('count2').Value:=numb2;
helpQuery2.Parameters.ParamByName('price2').Value:=ordpr2;
helpQuery2.Parameters.ParamByName('prod3').Value:=idord3;
helpQuery2.Parameters.ParamByName('count3').Value:=numb3;
helpQuery2.Parameters.ParamByName('price3').Value:=ordpr3;
//helpQuery2.Parameters.ParamByName('rp').Value:=rpid;
helpQuery2.Execsql;
helpQuery2.SQL.Clear;
Adotable1.Requery();
label6.Caption:=inttostr(repid);
не пойму как сделать в цикле все а если будет нужно 50 значенией 50 переменных делать?
тоесть таблица1 таблица2
id name count price id name1 count1 price1 name2 count2 price2

теперь если в таблице1 1 запись то при отработке она добавляется и поле name2 count2 price2 name3,count3,price3, это не правильно не пойму почему

Последний раз редактировалось Stilet; 18.09.2014 в 08:15.
2rei вне форума Ответить с цитированием
Старый 18.09.2014, 08:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это не правильно не пойму почему
Потому что перехода у тебя неи по записям:
ordtable2.Next; не прописан там где нужно перейти на следующую запись.
А вообще что за задача? ИМХО тут можно обойтись SQL запросом INSERT... SELECT...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2014, 10:55   #3
2rei
 
Регистрация: 18.09.2014
Сообщений: 3
По умолчанию

я пробовал ставить ordtable2.next ситуация такая же тоесть есть таблица1 где все товары, дальше пользователь нажимает добавить, и товар добавляется во временную таблицу ordt, где формируется список наименование товаров (это строки), дальше он нажимает продать и строки теперь должны стать в таблице2 столбцами (наименовани 1,цена1,коли1, наименова2,цена2,количество2, наименование3 и т.д) тоесть весь набор из табл1 это одна строка в табл2
маленький ролик может так более понятно будет я не очень хорошо умею объяснять http://www.youtube.com/watch?v=qKiv3kLFr5k
2rei вне форума Ответить с цитированием
Старый 18.09.2014, 13:32   #4
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Типа транспонировать чтоли таблицу?
superedward вне форума Ответить с цитированием
Старый 18.09.2014, 15:44   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
тоесть весь набор из табл1 это одна строка в табл2
Опа! А с чего ты так сделал? Почему одной строкой, а не схожими полями?
Временные таблицы так не делают. Временные хранилища делают максимально схожими по структуре с постоянным хранилищем, чтоб потом легко было переносить данные типа того запроса, что я выше написал.

Слюш, а прикрепи сюда свою базу в архиве.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вытащить строки из таблицы на другой лист по условию, с заданым распределением, и с возможностью добавления или удаления строк NaUmA Microsoft Office Excel 1 05.02.2014 22:52
Макрос: заполнение таблицы данными из другой таблицы с автоматическим добавлением строк yevgeniy.demidov Microsoft Office Excel 6 06.09.2012 15:27
Триггер , который после добавления записи в одну таблицу редактирует запись другой таблицы Rin БД в Delphi 7 18.12.2010 03:50
Access ограничить значение поля таблицы значениями полей другой таблицы Сергей089 Microsoft Office Access 10 08.12.2010 02:22
рассортировать и скопировать столбцы на другой лист hottoh Microsoft Office Excel 2 30.07.2010 19:05