![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |