Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1

Как избежать совпадений в базе данных?

02.11.2009, 20:33. Показов 1388. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Пытаюсь написать код для избежания совпадений полей в базе данных.
НО НЕ ПОЛУЧАЕТСЯ
Исходные edit1, edit2 Ключ в БД NAME_FIRM_ID
Последний код такой:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure TNew_Firm_Add.SpeedButton2Click(Sender: TObject);
var
// Проверка БД на заполнение
j:string;
k:string;
 
// Проверка базы фирма на совпадения
i:integer;
 
begin
// Проверка заполнения контролируемых полей
j:=(Edit1.Text);
k:=(Edit2.Text);
If (j='') or (k='')
then
begin
ShowMessage('Заполните "Полное наименование фирмы и Сокращенное наименование фирмы!');
exit;
end;
begin
// Проверка базы на совпадение
DBE_S.SQL_Schet_nom_firm.Close;
DBE_S.SQL_Schet_nom_firm.SQL.Clear;
DBE_S.SQL_Schet_nom_firm.SQL.Add('select * from FIRM.DB where ALL_NAME='+#39+Edit1.Text+#39+' AND SOKR_NAME='+#39+Edit2.Text+#39+'');
DBE_S.SQL_Schet_nom_firm.open;
i:=DBE_S.SQL_Schet_nom_firm.fieldbyname('NAME_FIRM_ID').AsInteger;
//Сравнение
If i<>0 then
begin
ShowMessage('Данная Фирма существует в базе данных!!! Сохранение не выполнено!!!');
exit;
end;
If i=0 then
begin
 // Счётчик номеров элемента БД фирма
НО!!! при небольших словах в edit работает, а при предложениях нет
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2009, 20:33
Ответы с готовыми решениями:

Поиск совпадений записей в базе данных
Как правильно составить алгоритм совпадений записей в БД? Искал здесь не нашел, а другой код не соответствовал нормам чтоль. Поэтому хочу...

Как произвести поиск в базе данных на наличие совпадений с заданным массивом
есть многомерный массив например А(4,5) и есть таблица в базе данных как можно в цикле пробежаться по массиву и проверить наличие...

Как избежать создание большого количества коннектов к базе данных
В АПИ файле каждый раз создаю соединение с БД $db = new mysqli($HOST, $LOGIN, $PASS, $DB_NAME); Все ок если запросов пара в секунду,...

9
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
02.11.2009, 23:37
Поясни что означает "не работает"? Не находит фирму по названию, которое заведомо есть в таблице? Или ошибку выдаёт?
И для ясности приведи реальный пример короткого названия - по которому правильно отрабатыавет. И пример длинного названия - на котором не сработало.
0
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1
03.11.2009, 09:12  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
Поясни что означает "не работает"? Не находит фирму по названию, которое заведомо есть в таблице? Или ошибку выдаёт?
И для ясности приведи реальный пример короткого названия - по которому правильно отрабатыавет. И пример длинного названия - на котором не сработало.

Спасибо, что откликнулись!!!
Смысл вот в чем.
Перед тем как внести новую фирма в базу данных Требуется провести проверку на наличие таковой в базе в случае:
если она есть в базе: прописывается О ее наличии. и запись не происходит.
Если нет: происходит ее запись как новую, в базу.

У меня получается следующее:
Если я заношу в edit слово: Вася
то работает как надо,
а если предложение: Карачаево-Черкесская государственная технологическая академия КЧР,
то есть такая в безе или нет все равно записывает как новую.
NAME_FIRM_ID- являеся цифрой
edit 1 и 2 - словом или предложением.
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
03.11.2009, 10:22
Цитата Сообщение от Sp Посмотреть сообщение
Здравствуйте!
Пытаюсь написать код для избежания совпадений полей в базе данных.
НО НЕ ПОЛУЧАЕТСЯ
А какой сервер БД используется?
Как правило, поля таблиц можно разрешить серверу индексировать и не допускать совпадений.
Таким образом, при попытке дабавить уже имеющуюся информацию, сервер выставит исключение, типа "нарушение уникальности данных".
Надо только его отловить и все...
1
1866 / 1186 / 192
Регистрация: 27.03.2009
Сообщений: 4,603
03.11.2009, 10:50
а ты попробуй сначало через запрос проверить есть ли такое в базе, а потом выполнить необходимые операции. так будет правильнее, вне зависимости от параметров полей базы
1
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
03.11.2009, 10:54
Sp, возьми эту строку из базы: "Карачаево-Черкесская государственная технологическая академия КЧР". И проведи её выверку. Для начала извлеки эту строку из БД и покажи на экране компа. Внимательно зрительно изучи её. Если строку удалось показать и внешне она такая как предполагалось, то идём дальше. - Внешне она может быть такая же как в шаблоне (который задаётся в Edit.Text), но, возможно, проблема в следующем. Может случиться так, что в строке, которая взята из базы, какая-то из букв введена не на кириллице, а на латинице. Например две строки могут выглядеть одинаково: "Строка" и "Cтрока". Но в первой строке все буквы кириллические, а во второй - первая буква "С" записана на латинице (это английская буква "C"). Поэтому "Строка" <> "Cтрока". Для исправления этого можешь перенабрать строку "Карачаево-Черкесская государственная технологическая академия КЧР" и заново ввести её в базу. Затем проверь. Кстати, латинские буквы чаще попадают в аббревиатуры -в "КЧР" на латинице могут оказаться "К" или (и) "Р". Пользователь запросто может при наборе спутать переключение регистра с переключением языка.
Следующий момент. Предложение, введённое в базу данных не содержит переносов строки или содержит? Т. е. есть ли в составе строки символы #13 и #10. Если есть - в этом может быть проблема.
1
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1
03.11.2009, 11:47  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
Sp, возьми эту строку из базы: "Карачаево-Черкесская государственная технологическая академия КЧР". И проведи её выверку. Для начала извлеки эту строку из БД и покажи на экране компа. Внимательно зрительно изучи её. Если строку удалось показать и внешне она такая как предполагалось, то идём дальше. - Внешне она может быть такая же как в шаблоне (который задаётся в Edit.Text), но, возможно, проблема в следующем. Может случиться так, что в строке, которая взята из базы, какая-то из букв введена не на кириллице, а на латинице. Например две строки могут выглядеть одинаково: "Строка" и "Cтрока". Но в первой строке все буквы кириллические, а во второй - первая буква "С" записана на латинице (это английская буква "C"). Поэтому "Строка" <> "Cтрока". Для исправления этого можешь перенабрать строку "Карачаево-Черкесская государственная технологическая академия КЧР" и заново ввести её в базу. Затем проверь. Кстати, латинские буквы чаще попадают в аббревиатуры -в "КЧР" на латинице могут оказаться "К" или (и) "Р". Пользователь запросто может при наборе спутать переключение регистра с переключением языка.
Следующий момент. Предложение, введённое в базу данных не содержит переносов строки или содержит? Т. е. есть ли в составе строки символы #13 и #10. Если есть - в этом может быть проблема.

Спасибо, что откликнулись!!!
А как можно программно сделать проверку записи в БД На наличие Латинских букв и Кирилицы?
И Условие:
-запись в БД только на Латинице
-запись в БД только на Кирилице

Цитата Сообщение от Mawrat Посмотреть сообщение
Sp А какой сервер БД используется?
BDE

Цитата Сообщение от Mawrat Посмотреть сообщение
Sp а ты попробуй сначало через запрос проверить есть ли такое в базе, а потом выполнить необходимые операции. так будет правильнее, вне зависимости от параметров полей базы
Так я это и делаю
0
1866 / 1186 / 192
Регистрация: 27.03.2009
Сообщений: 4,603
03.11.2009, 11:58
Цитата Сообщение от Sp Посмотреть сообщение
-запись в БД только на Латинице
-запись в БД только на Кирилице
я думаю можно проверку сделать при вводе типа так
Delphi
1
2
3
4
case key of
#8,'A'..'Z','a'..'z','.':;
else key:=#0
end;
1
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
03.11.2009, 12:32
BDE - это не сервер БД. Это разработанный Botrland-ом интерфейс (API) доступа к серверам БД. А БД - это Oracle, IBM DB2, MS SQL Server, Sybase и пр.
На счёт фильтра, работающего по принципу: "слова только на кириллице". - Надо иметь в виду, что есть большое количество российских организаций, которые в названии содержат латинские буквы. Хотя, если в программе будет переключатель: "только кириллица", "кириллица/латиница" - может быть это окажется полезным.
Для выверки отдельной строки, проще перенабрать её вручную и поместить в базу за место прежней.
1
Sp
5 / 5 / 2
Регистрация: 02.11.2009
Сообщений: 236
Записей в блоге: 1
03.11.2009, 15:59  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
BDE - это не сервер БД. Это разработанный Botrland-ом интерфейс (API) доступа к серверам БД. А БД - это Oracle, IBM DB2, MS SQL Server, Sybase и пр.
На счёт фильтра, работающего по принципу: "слова только на кириллице". - Надо иметь в виду, что есть большое количество российских организаций, которые в названии содержат латинские буквы. Хотя, если в программе будет переключатель: "только кириллица", "кириллица/латиница" - может быть это окажется полезным.
Для выверки отдельной строки, проще перенабрать её вручную и поместить в базу за место прежней.
Я извиняюсь!
Тогда DB2
Просто я программирую 2-й месяц и еще не во всем разбираюсь, но все равно спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2009, 15:59
Помогаю со студенческими работами здесь

Поиск совпадений данных в базе
Всем доброго времени суток, необходимо вывести текущего пользователя на сайте и по его имени найти ID в базе и получить его(вывести) в...

CporTLOto - избежать совпадений
Помогите что сделать чтобы не было совпадений !! SOS! SOS! SOS!+ program sportloto; var...

Несогласованность данных в БД. Как избежать?
Есть БД с таблицей: IF OBJECT_ID('Groups') IS NOT NULL DROP TABLE Groups; CREATE TABLE Groups( GroupID INT NOT NULL, ...

Записи в базе данных, как встать на последнюю запись в базе после открытия?
Есть два вопроса. Во-первых - как встать на последнюю запись в базе после открытия? И во-вторых - есть база в которую каждые 10...

Показ вариантов совпадений в базе в процессе введения в TextBox
Здравствуйте. Хочу реализовать показ всех совпадений в базе, по ходу того, как я ввожу данные в TextBox. Может плохо объяснил, но вот...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru