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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.03.2009, 15:27
goodwinrock goodwinrock вне форума
Прохожий
 
Регистрация: 09.01.2009
Сообщения: 37
Репутация: 10
По умолчанию Использование SQL в запросах

Здравствуйте. В процессе изучения SQL запросов, для реализации работы с данными в Дефли 7 я столкнулся с вопросом - как непосредственно применять запросы компонента Query на практике? Я в курсе, что Query с запросом SQL надо подключать к дата соурсу и данные отобразятся в гриде. Изучил кучу мануалов о синтаксисе операторов SELECT и DML (insert, update, ...). Объясните пожалуйсто подробно что необходимо сделать (что создать? куда разместить?) что бы спомощью SQL запроса реализовать добавление данных из таблицы 1 в таблицу 2 по нажатию кномки. БД парадокс 7. Данные о таблицах у меня хранятся в DataModule в Query.
Ответить с цитированием
  #2  
Старый 28.03.2009, 16:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще, можно сделать одним запросом без отображения данных.

INSERT INTO T2 (...) VALUES (SELECT ... FROM T1 WHERE ...)

Первое ... - список вставляемых полей
Второе ... - список выбираемых полей
Третье ... - условия отбора.

Этот запрос суешь в отдельный TQuery и потом у него вызываешь метод ExecSQL.

Подробнее о том, как можно строить запросы см, например, здесь:
www.sql.ru
http://www.compdoc.ru/bd/sql/
Ответить с цитированием
  #3  
Старый 28.03.2009, 20:47
goodwinrock goodwinrock вне форума
Прохожий
 
Регистрация: 09.01.2009
Сообщения: 37
Репутация: 10
По умолчанию

INSERT INTO Prodaj (Nom_zapis_tov, koll_tov1)
VALUES ( SELECT Nom_zapis_tov, Koll_tov FROM Ychet_tov )
Подогнал к свой БД этот код - ругается на Select (Invalid use keyword)
Как у Куверки вызвать метод ExecSQL?
Ответить с цитированием
  #4  
Старый 28.03.2009, 21:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Посмотри на ссылках точный синтаксис для твоей БД.
Ответить с цитированием
  #5  
Старый 29.03.2009, 00:02
goodwinrock goodwinrock вне форума
Прохожий
 
Регистрация: 09.01.2009
Сообщения: 37
Репутация: 10
По умолчанию

Да синтексис понятно как написать и придумать, я привел добавление записей (оператора insert ) в качестве примера. Меня интересует другое, я не могу понять как использовать готовые запросы. Манипуляция запросами. Для выполнения запроса по нажатию кнопки необходимо создать отдельный Квери с запросом, а как дальше действовать? У меня все таблицы хранятся в Квери и везде используется простой запрос SElect * From T1.
Ответить с цитированием
  #6  
Старый 29.03.2009, 00:16
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Если запрос на получение результата, то Query1.Open;
Если запрос не возвращает результат, то Query1.ExecSQL;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 29.03.2009, 12:54
goodwinrock goodwinrock вне форума
Прохожий
 
Регистрация: 09.01.2009
Сообщения: 37
Репутация: 10
По умолчанию

У меня имеется таблица Товары с полями: Код товара (перв. ключ) и Наменование
чтобы добавит в таблицу данные Код товара = 11 и НАименование = "Клавиатура" я делаю след.:
Создаю кверку отдельную, пишу туда
INSERT INTO Товары (Код товара, Наименование)
Values ('11', 'Клавиатура')
Пытаюсь активировать (свойство ACtive) Query1 - пишет мне ошибку Key Violation или иногда Can't creat cursor
Создаю кнопочку , что бы запрос ативировался по нажатию кнопки - пишу в кнопке: DataMOdule2.Query1.Open;
Ответить с цитированием
  #8  
Старый 29.03.2009, 13:41
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А код товара какого типа?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 30.03.2009, 10:31
goodwinrock goodwinrock вне форума
Прохожий
 
Регистрация: 09.01.2009
Сообщения: 37
Репутация: 10
По умолчанию

Сначала был счетчик (+), потом изменил на Интегер, последний и всеравно ошибка связаная с ключем, если допустим хочу добавит только Name_tov
INSERT INTO Tov_postav (Name_tov)
Values ('Клавиатура')

Пишет ошибку Field value requiered
ЧТо если ты или я тебе в аську отпишу, там все опсудим уже по ходу дела
373947235

Последний раз редактировалось goodwinrock, 30.03.2009 в 10:34.
Ответить с цитированием
  #10  
Старый 30.03.2009, 10:55
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вы сами себя запутали, когда у вас был счетчик вы пытались в него запихать текст, естественно это вызывало ошибку. Теперь вы переделали на Integer, но ключ записи все-равно обязательным остался и теперь от вас уже требуется самому следить за его наполнением, что вы неделаете.
Верните на родину счетчик и заполняйте поля правильными данными. Для счетчика заполнять ничего ненадо, он сам это делает.
Если у вас в таблице Товары счетчик [Код товара] то вставка записи будет так:
Код:
 INSERT INTO Товары (Наименование) Values ('Клавиатура')
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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