Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.11.2013, 11:45
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
Смущение Перенос записей с одно йтаблицы в другую

Здравствуйте!
Попробовала сделать как вы перенос строки в другую таблицу и ничего вообще!!!
У меня две таблицы Contain u Containers u Bay. Есть поле Edit.
Принцип такой. Это погрузка бея контейнерного судна
Беру с таблицы Contain один контейнер и ложу его в таблицу Bay. Чтоб знать какой контейнер считываю активную ячейку в Edit и по изменению Edit надо перебросить все поле того выделенного контейнер ав тблицу Containers. делаю так

procedure TForm6.Edit7Change(Sender: TObject);
begin
try
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO Containers SELECT * FROM Contain AS Container WHERE Container LIKE '''+Edit7.Text+'''');
Query1.ExecSQL;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT * FROM Containers');
Query2.Active:=True;
except
on e:Exception do
end;
end;

Я уже все офрму перечитала и так толкового ответа не нашла как сделать переброс поля в другую таблицу!!!
Буду очень благодарна за помощь!
Структура таблиц.
Contain KodCont, Container, Cargo, MassT
Containers KodCont, Container, Cargo, MassT, Tier, Row,Bay
Bay - просто таблица с пустими ячейкам, куда я вношу контейнеры с таблицы Contain
Использую DataSourse, Query1, Table,DbGrid
Так пробую так даже ошибки не выбивает но не работает
Ответить с цитированием
  #2  
Старый 13.11.2013, 12:00
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

т.е. если я правильно понимаю, нужно скопировать из таблицы контейнеры в таблицу бай все поля записи, номер которой находится в edit?

синтаксис Insert
Код:
INSERT INTO таблица (поле 1, поле 2) VALUES ( значение 1, значение2);
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")

Последний раз редактировалось Mrak, 13.11.2013 в 12:02.
Ответить с цитированием
  #3  
Старый 13.11.2013, 12:03
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

нет не так, в таблицу Bay я их заношу вручную копированием и когда я их вношу , содержимое этой активной ячейки, в которой я стою отображается в Edit. Потом по изменению едита, если его значение совпадает с полем Container таблицы Сontainб я должна перенести эту запись в таблицу Containers
Ответить с цитированием
  #4  
Старый 13.11.2013, 12:08
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Таблица Contain - это база данных контейнеров, которые есть в порту
Bay - єто первый бэй судна
Container - это база контенеров на судне уже загруженых с их позицией.
Поэтому я беру контейнер с бзы в порту, ложу его в бей и он атоматически должен переместиться в базу контейнеров судна
Ответить с цитированием
  #5  
Старый 13.11.2013, 12:20
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

попробуйте
Код:
adoqury.close;
adoQuery.SQL.text:='INSERT INTO containers SELECT * FROM Contain WHERE Container = ''' + Edit7.Text + ''';
и сделайте поля в таблицах одинаковыми

перевод этого запроса
"вставить в контейнеры все поля таблицы контейнер у которых поле контейнер такое же как в edit"

еще в помощь
http://phpclub.ru/mysql/doc/insert.html
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #6  
Старый 13.11.2013, 12:22
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Поля в таблицах одинаковые, разница только в том, что в базе контейнеров на судне есть еще 3 столбца, в которых я храню позицию контейнера. а так они идентичны!
Ответить с цитированием
  #7  
Старый 13.11.2013, 12:26
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Пробовала, пишед инвалид параметрс и выделяет строку
Query2.SQL.Clear;

код такой
procedure TForm6.Edit7Change(Sender: TObject);
begin
try
Query1.Active:=false;
query1.SQL.Clear;
Query1.SQL.Text:= 'INSERT INTO Containers SELECT * FROM Contain WHERE Container = ''' + Edit7.Text + ''' ';
Query1.ExecSQL;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT * FROM Containers');
Query2.Active:=True;
except
on e:Exception do
end;
end;

пишу Active:=false; так как Close он выбивает ошибку
Ответить с цитированием
  #8  
Старый 13.11.2013, 12:44
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от YuliyaKar
пишу Active:=false; так как Close он выбивает ошибку
Не может такого быть. "Query1.Active:=False" и "Query1.Close" это совершенно одно и то же.
По поводу вопроса - можно мозг вывихнуть пытаясь понять как это всё должно работать.
И оформляй пожалуйста исходный код в сообщениях.
Ответить с цитированием
  #9  
Старый 13.11.2013, 12:49
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от poli-smen
Не может такого быть. "Query1.Active:=False" и "Query1.Close" это совершенно одно и то же.
По поводу вопроса - можно мозг вывихнуть пытаясь понять как это всё должно работать.
И оформляй пожалуйста исходный код в сообщениях.
какое описание такие и ответы)

ТС, зачем вам все эти edit и таблица бай
два грида - список контейнеров и текущие контейнеры
кнопка - добавить контейнер, при нажатии которой в таблицу контейнеры вставляется запись с id из списка и все, т.е. структура таблицы Containers: KodCont, Tier, Row,Bay
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #10  
Старый 13.11.2013, 12:51
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Все с Close решила, нормально все.
Выдает обибку в строке
Код:
Query1.ExecSQL;
Это какой-то замкнутый круг!

По логике оно работает очень просто. В таблицу Бэй вносим название контейнера с таблицы Contain. Это название считывается в Edit и при его изменении запись с этим контейнером должна переместиться в таблицу Containers

Как картинку вставить сюда?

Последний раз редактировалось YuliyaKar, 13.11.2013 в 12:54.
Ответить с цитированием
  #11  
Старый 13.11.2013, 12:55
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от YuliyaKar
По логике оно работает очень просто. В таблицу Бэй вносим название контейнера с таблицы Contain. Это название считывается в Edit и при его изменении запись с этим контейнером должна переместиться в таблицу Containers

Извините, но по логике, все через задницу
Зачем во второй таблице хранить то же самое что и в первой? это избыточность информации, что будет когда количество записей перевалит за миллион? зачем все таки нужна таблица бэй?
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #12  
Старый 13.11.2013, 12:59
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Таблица Бэй имитирует структура самого Бея на судне, то есть ячейки куда ставить контейнеры! Я вам рисунок хотела скинуть, но не знаю как.
И таблицы не одинаковые, Contain являет собой просто набор контейнеров, что есть в порту. Containers - набор контейнеров на судне и их четким месторасположением на судне!
Просто при перемещении контейнеров они с базы в порту должны удаляться, а в базу судна - появляться.
Как картинку вставить?
Ответить с цитированием
  #13  
Старый 13.11.2013, 13:17
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

ВОт как оно выглядит!
Зелененькая это таблица Бэй. Когда я загрузила туда контейнер ячейка стала зеленой. Если он сильно тяжелый или влияет на остойчивоссть судна ячейка будет красной

http://cs409223.vk.me/v409223232/4765/4h4xhJvIlhs.jpg - ссылка на рисунок
Ответить с цитированием
  #14  
Старый 13.11.2013, 14:19
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

если query1 - это таблица Contain, то попробуйте так
Код:
  querik.Close;
  Querik.SQL.text:='INSERT INTO Containers VALUES ( " + 
  query1.fieldbyname(KodCont).asstring + ", " + 
  query1.fieldbyname(Container).asstring + ", " + 
  query1.fieldbyname(Cargo).asstring + ", " + 
  query1.fieldbyname(MassT).asstring + ", NULL, NULL, NULL)';
  querik.ExecSQL;

в таблицу будут вставлены записи, соответствующие выбранной строке query1
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #15  
Старый 13.11.2013, 15:29
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо!!! Получилось вот так:
Код:
procedure TForm6.Edit7Change(Sender: TObject);
begin
Query1.Active:=false;
 query1.SQL.Clear;
Query1.SQL.Text:= 'INSERT INTO Containers.DB (KodCont,Container, Cargo,MassT) SELECT * FROM Contain.DB WHERE Container = ''' + Edit7.Text + '''';
query1.ExecSQL;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT * FROM Containers');
Query2.Active:=True;
end;

Но теперь другая проблема, он почему-то два раза добавляет эту запись, хотя я нажимаю всего раз. Ну думаю, с этим сейчас разберусь.
Спасибо за оперативность!
И еще у меня возник вопрос, а как сделать чтоб раз он добавил в таблицу - сразу увидеть эти записи в компоненте DBGrid&

Последний раз редактировалось YuliyaKar, 13.11.2013 в 15:32.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter