Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 17
1

SQL запрос: проверка на одинаковые записи при добавлении

30.05.2013, 19:04. Просмотров 2140. Ответов 9
Метки нет (Все метки)

БД: Data, Naimenovanie predpriyatiya, FIO rukovoditelya и т.д. Нужно чтобы при добавлении в одну дату не было повторных Предприятий, т.е. проверить если в базе уже имеется запись на эту дату именно данного предприятия то вывести ошибку: "Запись уже существует!".
Для добавления использую отдельную форму. Data вводится с помощью Monthcalendar, Naimenovanie predpriyatiya - dblookupcombobox.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2013, 19:04
Ответы с готовыми решениями:

MS Sql: при добавлении новой записи, информация из первой записи в таблице исчезает
Ошибка заключается в том, что при добавлении новой записи(через программу), информация из первой...

VB Проверка на уникальность, при добавлении новой записи
Всех приветствую. Столкнулся с небольшой проблемой проверки на уникальность (поле "Номер" ) при...

Проверка на уникальность поля, при добавлении новой записи
Помогите, плиз. Есть форма добавления записей в таблицу. Есть некое уникальное поле, при...

Ошибка при добавлении записи в таблицу через SQL
Когда я активирую ADOQuery, происходит ошибка "commandtext does not return a resultset". Сам SQl...

9
651 / 545 / 238
Регистрация: 26.11.2012
Сообщений: 2,152
31.05.2013, 12:13 2
Проверте запросом, если чтонить выдаст, то сообщение, если пусто внести данные.
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 17
31.05.2013, 14:30  [ТС] 3
может кто ошибку найдет. выдает AdoQuery: Field 'Дата' not found.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
Form1.ADOQuery1.FieldByName('data').AsDateTime:=MonthCalendar1.Date;
 form1.ADOQuery1.Close;
 form1.ADOQuery1.SQL.Clear;
 form1.ADOQuery1.SQL.Add('select count(*) as Countrec from predpr where data=:p and [Naimenovanie predpriyatiya] =:p1');
 form1.ADOQuery1.Parameters.ParamByName('p').Value:=MonthCalendar1.Date;
 form1.ADOQuery1.Parameters.ParamByName('p1').Value:=DBLookupComboBox1.Text;
   form1.ADOQuery1.Open;
   if Form1.ADOQuery1.FieldByName('countrec').AsInteger=0 then begin
   form1.ADOQuery1.Insert;  end;
close;
end;
0
965 / 640 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
31.05.2013, 15:01 4
Gulmira, если у вас есть поле с названием data, то пишите его в квадратных скобках, т.к. это слово служебное: [data].
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 17
31.05.2013, 15:07  [ТС] 5
да есть, пробовала всё равно выдает эту же ошибку
0
965 / 640 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
31.05.2013, 15:15 6
Gulmira, а первой строкой вы в таблице (которая содержится в ADOQuery1) присваиваете полю "data" значение из MonthCalendar1. Вопросы:
1. Вы открываете для редактирования (Edit или Insert) таблицу?
2. Почему не сохраняете это значение в таблице (Post)?
3. Есть ли вообще в В ADOQuery1 поле "data" (заметил, что вы этот query используете для разных наборов записей)?
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 17
31.05.2013, 15:23  [ТС] 7
1.На кнопке Добавить пишу событие для открытия новой формы для добавления и здесь же вставляю с помощью Insert:
Delphi
1
2
form2.Show;
 ADOQuery1.Insert;
2. В таблицу и без Post сохраняется поэтому и не использовала его
3. Поле Data есть, в самом первом сообщении описано пару полей которые нужны для запроса
0
965 / 640 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
31.05.2013, 15:34 8
Цитата Сообщение от Gulmira Посмотреть сообщение
в самом первом сообщении описано пару полей которые нужны для запроса
если Вы имеете ввиду Ваш первый пост? Это ничего не говорит о наличии этого поля в ADOQuery1. Поскольку вы постоянно меняете наборы данных в ADOQuery1 его там попросту нет. Кроме того, после вашего запроса (даже если он пройдет) и вы получите пустую таблицу (с одним полем), какую запись вы пытаетесь туда вставить в эту новую таблицу (первоначальной таблицы в ADOQuery1 уже нет - вы ее заменили своей выборкой)? Для всяких промежуточных действий (UPDATE, INSERT, DELETE или подсчет количества) заведите себе ADOQuery2, чтобы первоначальный набор данных в ADOQuery1 оставался нетронутым.
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 17
31.05.2013, 15:52  [ТС] 9
Это получается нужно связать ADOQuery2 с этой же таблицей(predpr). Затем в этом наборе сделать выборку. Затем обновить набор в ADOQuery1. Я правильно поняла? или как всегда...))
0
965 / 640 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
31.05.2013, 15:56 10
ADOQuery2 нужно связывать с имеющимся ADOConnection. А какие таблицы или что-то еще - это по мере надобности. Главное: чтобы в ADOQuery1 не менялись количество и названия полей - только обновлять при каких-либо внесенных изменениях.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2013, 15:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка при добавлении float записи в Azure SQL
Есть таблица в бд с полем типа float, есть переменная тоже float которая образуется из строки так:...

Ошибка при добавлении записи в SQL Server 2012
Добрый день, уважаемые. Очень нужна ваша помощь. Подскажите, пожалуйста. Есть база данных SQL...

Обновление DataGridView при добавлении записи через запрос
Добрый день! Подскажите пожалуйста как реализовать обновление dataGridView (чтобы выводились все...

Ошибка при удалении и добавлении записи из сущности EF CodeFirst в MS SQL
Я только начинаю изучать ASP.NET и связанные с ним технологии, поэтому буду очень признателен за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.