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

Delphi Sources



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

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

Здравствуйте!!
Подскажите, пожалуйста, как с одной таблицы со строки вставить данные в столбце другой?
Структура таблиц такая
Первая DSO
Kodo Name Sin KN KG fs lST Ld
1 5
2 10
3 20
4 30
5 40
6 50
7 60
8 75
Это таблица расчета остойчивости судна
Еще у меня есть поле Edit8? в котором у меня осадка судна - она меняется в зависимости от веса судна при погрузке

Вторая - Stab ? здесь даны значения KN (смотри первую таблицу) в зависимости от осадки
Kod D Draft 5 10 20 30 40 50 60 75
1 3 1,205 2,394 4,559 6,162 7,382 8,239 8,538 8,33
Вот по изменению поля Edit мне надо встаить соответствующие осадке плечи формы KN по градусам от 5 до 75?
Я пишу так
Код:
Код:
procedure TForm6.Edit8Change(Sender: TObject);
begin
Query3.Active:=false;
 query3.SQL.Clear;
Query3.SQL.Text:= 'INSERT INTO DSO.DB (KN) SELECT (5,10,20,30,40,50,60,75) FROM Stab.DB WHERE Draft = ''' + Edit8.Text + '''';
query3.ExecSQL;
end;


Но пишет ошибку! Буду рада помощи!

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

http://g.zeos.in/?q=%D1%81%D0%B8%D0%...insert%20mysql

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

Так я по этой схеме и писала, что вы мне прошлый раз скидывали!
Вся загвоздка в том, что он не хочет вставлять строку в столбец. ТО есть данные в одной таблице в виде строки и они по количеству совпадают с данными, которые должны быть в другой таблице в столбце. Но он возмущается на названия полей столбцов (5,10,20,30,40,50,60,75).
Пишу словами смысл запроса?
Вставить в таблицу DSO.DB в столбец KN выбранную запись, данные которой находятся в столбцах (5,10,20,30,40,50,60,75) с таблицы Stab.DB если данные со столбца Draft равны введенному в = ''' + Edit8.Text + ''' ' значению.
По логике. все так же как я и перебрасывала строки, но причина в том, что я пытать строку вставить в столбец"

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

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

Эхх....неужели я так непонятно ставлю вопросы?
Ответить с цитированием
  #6  
Старый 19.11.2013, 17:41
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

там ссылка неспроста
а по ссылке первое найденное - само то)
прочитай, пожалуйста

вот смотри, диалог:
- СУБД! а ну-ка вставь в таблицу DSO.DB в ОДНО поле KN кучу полей (5,10,20,30,40,50,60,75)
- ???
- вот, блин, тупая база!
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #7  
Старый 19.11.2013, 17:52
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Та я прекрасно понимаю, что я чисто теоретически не могу так вставить, так как написано, что команда Insert вставляет только строки. И я нигде не нашла, чтоб кто-то с таким стыкался.
Я посмотрела эту ссылку уже несколько раз! И так и не поняла как это сделать
Код:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
        SELECT ...

По вот этой структуре пишу
Код:
Insert INTO DSO.db (KN) select (10) FROM Stab.db where DRAFT='''+Edit8.Text+'''';

Попробую одно вставить!

Последний раз редактировалось YuliyaKar, 19.11.2013 в 18:02.
Ответить с цитированием
  #8  
Старый 20.11.2013, 15:16
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Можно вот так сделать, но это как-то не камильфо смотрится:
Код:
insert into Table1 (Kod) (select 5 union select 10 ... union select 75)
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 20.11.2013, 16:35
YuliyaKar YuliyaKar вне форума
Прохожий
 
Регистрация: 13.11.2013
Сообщения: 37
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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

Попробовала встатвить хоть одно значение
Цитата:
Query3.Active:=false;
query3.SQL.Clear;
query3.SQl.Text:='INSERT INTO DSO.DB (KN) SELECT 10 FROM Stab.DB WHERE DRAFT = ''' + Edit8.Text + '''';
query3.ExecSQL;
Что ошибка типов в выражении. Но поля все типа String

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

Ну и опять все к тому же. Ну никак не получается у меня сделать эту вставку строки в столбец
Выбивает ошибку Type mistmach in expression
Я разбила и сделала вот так
Код:
Query3.Active:=false;
 query3.SQL.Clear;
 query3.SQl.Text:='INSERT INTO DSO.db (KN)';
 query3.SQL.Text:='SELECT (10) FROM Stab.db WHERE DRAFT ='''+edit8.Text+''' UNION select (20) FROM Stab.db WHERE DRAFT ='''+edit8.Text+''' UNION select (30)FROM Stab.db WHERE DRAFT ='''+edit8.Text+''''; //FROM Stab.db WHERE DRAFT ='''+edit8.Text+'''';
 query3.ExecSQL;
 if Query3.IsEmpty then
  raise Exception.Create('Ничего не найдено')
else edit10.Text:= Query3.FieldByName('10').AsString;
 table5.Close;
 table5.Open;
Решил проверить выбирает ли он вообще хоть что-то и решил запистаь результат в поле edit10,но и оно выбивает ошибку "Что запись не найдена". Что его делать? Непонятно ... подскажите что-то ((
Ответить с цитированием
  #12  
Старый 31.01.2014, 14:25
Rus_boz Rus_boz вне форума
Прохожий
 
Регистрация: 30.01.2014
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А в цикле insert?
или хранимую процедуру которая все делает.

Последний раз редактировалось Rus_boz, 31.01.2014 в 14:41.
Ответить с цитированием
  #13  
Старый 31.01.2014, 17:23
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

почти 2 месяца прошло
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #14  
Старый 31.01.2014, 17:43
Rus_boz Rus_boz вне форума
Прохожий
 
Регистрация: 30.01.2014
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

query3.SQl.Text:='INSERT INTO DSO.DB (KN) SELECT 10 FROM Stab.DB WHERE DRAFT = ''' + Edit8.Text + '''';
Чегойто здесь не так )
а попробуй
query3.SQl.Text:='INSERT INTO DSO.DB (KN) SELECT 10 FROM Stab.DB WHERE DRAFT ='+''''+Edit8.Text+''''+';';
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter