Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39

Поиск по БД: "Аргументы имеют неверный тип, выходят за пределы диапазона или вступают в конфликт"

30.05.2014, 11:02. Показов 2689. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо сделать поиск. В программе подключил бд через dbgrid, adoconnection,adoquery, datasource;
есть изображение во вложении, так вот: в combobox я выбираю поле по которому будет поиск, затем активируя dbgrid начинаю искать(пишу "и", должен выделять строку с началом "и"(как обычный поиск)), но у меня это не получается. Пишет: аргументы имеют неверный тип, выходят за пределы диапазона или вступают в конфликт друг с другом.
тут код:
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
 a:='N_KDK';
  b:='Fam';
  c:='Nam';
  d:='OTCH';
  e:='MESTO_ROZD';
  f:='Tel_DOM';
  g:='TEL_MOB';
   fc:=fc+key;
  if combobox1.Items.GetText=a then
   DbGrid1.DataSource.DataSet.Locate('N_KDK', fc, [loPartialKey]);
  statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
  if combobox1.Items.GetText=b then
   DbGrid1.DataSource.DataSet.Locate('FAM', fc, [loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
  if combobox1.Items.GetText=c then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.Items.GetText=d then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.Items.GetText=e then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.Items.GetText=f then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.Items.GetText=g then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
   end;
Надеюсь на помощь.
P.S. в статусбар(кто не понял) выводится: Ищем ...
Миниатюры
Поиск по БД: "Аргументы имеют неверный тип, выходят за пределы диапазона или вступают в конфликт"  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2014, 11:02
Ответы с готовыми решениями:

Ошибка: Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт
Уважаемые программисты прошу вас помогите мне пожалуйста.Я создаю программу в Delphi которая связывается с бд при помощи ADO Table.Когда я...

Ошибка: "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом"
Ребят, вопрос такой, выходит ошибка при фильтрации по трем столбцам (ФИО), а при фильтрации двух или одного столбца ошибки нет и фильтрации...

Ошибка: "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом"
Помогите не могу разобраться с фильтрацией по датам выдает Ошибка: "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона...

16
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39
30.05.2014, 11:09  [ТС]
Ошибся, ту ошибку он выдавал когда я пытался просто сделать поиск, а так выводит: List index out of bounds(0)
0
 Аватар для Whisper119
34 / 34 / 22
Регистрация: 18.03.2014
Сообщений: 174
30.05.2014, 11:49
Ты обращаешся к несуществующему элементу массива. Смотри в какой строке ошибка с помощью пошагового выполнения.
0
0 / 0 / 0
Регистрация: 07.09.2010
Сообщений: 5
30.05.2014, 15:21
Инкрементный поиск есть в DBGridEh, свойство OptionsEh[dghIncSearch,dghPreferIncSearch] и тогда курсор будет перемещаться до строки где будет совпадение
0
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39
02.06.2014, 09:13  [ТС]
Цитата Сообщение от Whisper119 Посмотреть сообщение
Ты обращаешся к несуществующему элементу массива. Смотри в какой строке ошибка с помощью пошагового выполнения.
Проверял по строчно. Ошибка в строках: 10, 13, 16... в них, не знаю почему
0
 Аватар для Whisper119
34 / 34 / 22
Регистрация: 18.03.2014
Сообщений: 174
03.06.2014, 08:51
YashkaYa, а поля у тебя созданны по правилам в dataset'e через fields editor или это просто колонки в DBGrid'e?
0
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39
03.06.2014, 09:38  [ТС]
Whisper119, в dbgrid через adoquery добавленно по правилам, а в combobox я сделал так, чтобы прога просматривала выбор comboboxa и делала поиск по выбранному полю.
0
 Аватар для BROID
1 / 1 / 1
Регистрация: 24.05.2014
Сообщений: 7
03.06.2014, 09:43
Попробуй так Locate('N_KDK', fc, [loCaseInsensitive,loPartialKey])

Добавлено через 56 секунд
Т.е. опцию loCaseInsensitive добавить
0
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39
03.06.2014, 09:54  [ТС]
BROID, Выводит всё ту же ошибку: List index out of bounds(0), я даже изменил код, упростил:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  fc:=fc+key;
  if combobox1.ItemIndex=1 then
   DbGrid1.DataSource.DataSet.Locate('N_KDK', fc, [loCaseInsensitive,loPartialKey]);
  statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
  if combobox1.ItemIndex=2 then
   DbGrid1.DataSource.DataSet.Locate('FAM', fc, [loCaseInsensitive,loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
  if combobox1.ItemIndex=3 then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loCaseInsensitive,loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.ItemIndex=4 then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loCaseInsensitive,loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.ItemIndex=5 then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loCaseInsensitive,loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.ItemIndex=6 then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loCaseInsensitive,loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
if combobox1.ItemIndex=7 then
   DbGrid1.DataSource.DataSet.Locate('N_kdk', fc, [loPartialKey]);
   statusbar1.Panels.Items[0].Text:='Èùåì:'+fc;
   end;
Просто закинул в combobox эти линии, и беру номер строки(выбранной).
0
 Аватар для BROID
1 / 1 / 1
Регистрация: 24.05.2014
Сообщений: 7
03.06.2014, 10:00
Хм, а в каких строках даёт ошибку?
0
 Аватар для Whisper119
34 / 34 / 22
Регистрация: 18.03.2014
Сообщений: 174
03.06.2014, 10:02
YashkaYa, я имел ввиду не заполнение таблицы, а само ее создание. на dataset'e нажми правой кнопкой и нажми Fields Editor... там у тебя названия столбцов имеются?
0
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39
03.06.2014, 10:58  [ТС]
BROID, 3, 6....

Добавлено через 40 минут
Whisper119, слушай не могу найти Dataset, на моей форме: DbGrid, ADOQuery, AdoConnection, datasource, ADOTable
0
 Аватар для Whisper119
34 / 34 / 22
Регистрация: 18.03.2014
Сообщений: 174
03.06.2014, 11:28
мой косяк)) я думал ты через dataset.

Добавлено через 57 секунд
9, 12 строки дают ошибку?

Добавлено через 15 минут
а также что записывается в переменные fc и key?
0
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39
04.06.2014, 08:14  [ТС]
Whisper119, в fc берём текст который печатаем, key переменная отвечающая за нажатие клавиш что ли,
Ошибки в строках: DbGrid1.DataSource.DataSet.Locate('N_KDK ', fc, [loPartialKey]); (и всех подобных)
0
 Аватар для Whisper119
34 / 34 / 22
Регистрация: 18.03.2014
Сообщений: 174
04.06.2014, 08:52
Цитата Сообщение от YashkaYa Посмотреть сообщение
key переменная отвечающая за нажатие клавиш что ли
Зачем? Ты по какому событию выполняешь этот код?
0
2 / 2 / 0
Регистрация: 11.03.2014
Сообщений: 39
04.06.2014, 09:03  [ТС]
Whisper119,
ВСЁ!!!!! Смотри:
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
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var  fc, f:string;
begin
 fc:=fc+key;
   f:=edit1.Text;
     if combobox1.ItemIndex=0 then
     DbGrid1.DataSource.DataSet.Locate('N_KDK', f, [loPartialKey]);
   Label10.Caption:='Èùåì:'+edit1.Text;
     if combobox1.ItemIndex=1 then
     DbGrid1.DataSource.DataSet.Locate('FAM',f, [loPartialKey]);
  Label10.Caption:='Èùåì:'+edit1.Text;
  if combobox1.ItemIndex=2 then
     DbGrid1.DataSource.DataSet.Locate('NAM', f, [loPartialKey]);
   Label10.Caption:='Èùåì:'+edit1.Text;
    if combobox1.ItemIndex=3 then
   DbGrid1.DataSource.DataSet.Locate('OTCH', f, [loPartialKey]);
  Label10.Caption:='Èùåì:'+edit1.Text;
  if combobox1.ItemIndex=4 then
   DbGrid1.DataSource.DataSet.Locate('ORG', f, [loPartialKey]);
   Label10.Caption:='Èùåì:'+edit1.Text;
   if combobox1.ItemIndex=5 then
   DbGrid1.DataSource.DataSet.Locate('MESTO_ROZD', f, [loPartialKey]);
 Label10.Caption:='Èùåì:'+edit1.Text;
 if combobox1.ItemIndex=6 then
   DbGrid1.DataSource.DataSet.Locate('TEL_DOM', f, [loPartialKey]);
     Label10.Caption:='Èùåì:'+edit1.Text;
   if combobox1.ItemIndex=7 then
   DbGrid1.DataSource.DataSet.Locate('TEL_MOB', f, [loPartialKey]);
 Label10.Caption:='Èùåì:'+edit1.Text;
   end;
Короче: промблема где то в statusbar была, я убрал его и поставил label, а также: я теперь не в событие keypress у dbgrida а В keypress у Edita!!! смотри Картинку:
Миниатюры
Поиск по БД: "Аргументы имеют неверный тип, выходят за пределы диапазона или вступают в конфликт"  
0
 Аватар для Whisper119
34 / 34 / 22
Регистрация: 18.03.2014
Сообщений: 174
04.06.2014, 09:11
Отлично. я по этому и спросил по какому событию. А поповоду панели у тебя скорее всего не созданно там поле (двойной клик->AddNew)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.06.2014, 09:11
Помогаю со студенческими работами здесь

Аргументы имеют неверный тип, выходят за пределы допустимого диапазона
Имеется база данных Access. Есть две таблицы: "Порты" и "Устройства". В таблице "Порты" есть поля "Код устройства" и...

Ошибка аргументы имеют неверный тип выходят за пределы допустимого диапазона
Тут есть программа. При нажатие на radiogroup вылезает ошибка аргументы имеют неверный тип выходят за пределы допустимого диапазона. ...

Ошибка: Аргументы имеют неверный тип, выходят за пределы допустимого диапазона
Не могу решить проблему связки таблиц. Ошибка: Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в...

Ошибка при сортировке AdoTable ' Аргументы имеют неверный тип, выходят за пределы допустимого диапазона.'
Необходимо сортировать записи в таблице по столбцу 'Номер поезда'. Использовались такие компоненты как DBGrid, ADOTable и DataSource. При...

"Аргументы имеют неверный тип, выходят за пределы допустимого диапазона"
var s:string; begin s:=InputBox(‘Поиск’,Введите название''); if s<>''then begin ADOQuery2.Filtered:=False; ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru