|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Перенос записей с одно йтаблицы в другую
Здравствуйте!
Попробовала сделать как вы перенос строки в другую таблицу и ничего вообще!!! У меня две таблицы 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
|
||||
|
||||
т.е. если я правильно понимаю, нужно скопировать из таблицы контейнеры в таблицу бай все поля записи, номер которой находится в edit?
синтаксис Insert Код:
INSERT INTO таблица (поле 1, поле 2) VALUES ( значение 1, значение2); Я за здоровый экстрим! Спасибо за "спасибо") Последний раз редактировалось Mrak, 13.11.2013 в 12:02. |
#3
|
|||
|
|||
нет не так, в таблицу Bay я их заношу вручную копированием и когда я их вношу , содержимое этой активной ячейки, в которой я стою отображается в Edit. Потом по изменению едита, если его значение совпадает с полем Container таблицы Сontainб я должна перенести эту запись в таблицу Containers
|
#4
|
|||
|
|||
Таблица Contain - это база данных контейнеров, которые есть в порту
Bay - єто первый бэй судна Container - это база контенеров на судне уже загруженых с их позицией. Поэтому я беру контейнер с бзы в порту, ложу его в бей и он атоматически должен переместиться в базу контейнеров судна |
#5
|
||||
|
||||
попробуйте
Код:
adoqury.close; adoQuery.SQL.text:='INSERT INTO containers SELECT * FROM Contain WHERE Container = ''' + Edit7.Text + '''; перевод этого запроса "вставить в контейнеры все поля таблицы контейнер у которых поле контейнер такое же как в edit" еще в помощь http://phpclub.ru/mysql/doc/insert.html Я за здоровый экстрим! Спасибо за "спасибо") |
#6
|
|||
|
|||
Поля в таблицах одинаковые, разница только в том, что в базе контейнеров на судне есть еще 3 столбца, в которых я храню позицию контейнера. а так они идентичны!
|
#7
|
|||
|
|||
Пробовала, пишед инвалид параметрс и выделяет строку
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
|
||||
|
||||
Цитата:
По поводу вопроса - можно мозг вывихнуть пытаясь понять как это всё должно работать. И оформляй пожалуйста исходный код в сообщениях. |
#9
|
||||
|
||||
Цитата:
ТС, зачем вам все эти edit и таблица бай два грида - список контейнеров и текущие контейнеры кнопка - добавить контейнер, при нажатии которой в таблицу контейнеры вставляется запись с id из списка и все, т.е. структура таблицы Containers: KodCont, Tier, Row,Bay Я за здоровый экстрим! Спасибо за "спасибо") |
#10
|
|||
|
|||
Все с Close решила, нормально все.
Выдает обибку в строке Код:
Query1.ExecSQL; По логике оно работает очень просто. В таблицу Бэй вносим название контейнера с таблицы Contain. Это название считывается в Edit и при его изменении запись с этим контейнером должна переместиться в таблицу Containers Как картинку вставить сюда? Последний раз редактировалось YuliyaKar, 13.11.2013 в 12:54. |
#11
|
||||
|
||||
Цитата:
Извините, но по логике, все через задницу Зачем во второй таблице хранить то же самое что и в первой? это избыточность информации, что будет когда количество записей перевалит за миллион? зачем все таки нужна таблица бэй? Я за здоровый экстрим! Спасибо за "спасибо") |
#12
|
|||
|
|||
Таблица Бэй имитирует структура самого Бея на судне, то есть ячейки куда ставить контейнеры! Я вам рисунок хотела скинуть, но не знаю как.
И таблицы не одинаковые, Contain являет собой просто набор контейнеров, что есть в порту. Containers - набор контейнеров на судне и их четким месторасположением на судне! Просто при перемещении контейнеров они с базы в порту должны удаляться, а в базу судна - появляться. Как картинку вставить? |
#13
|
|||
|
|||
ВОт как оно выглядит!
Зелененькая это таблица Бэй. Когда я загрузила туда контейнер ячейка стала зеленой. Если он сильно тяжелый или влияет на остойчивоссть судна ячейка будет красной http://cs409223.vk.me/v409223232/4765/4h4xhJvIlhs.jpg - ссылка на рисунок |
#14
|
||||
|
||||
если 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
|
|||
|
|||
Спасибо!!! Получилось вот так:
Код:
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. |