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

Delphi+InterBase

17.10.2014, 00:04. Показов 1274. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня пару вопросов касательно БД INTB+Delphi.

1) у меня есть Edit в него я вписываю название данных в определённом поле, в DBGrid-е курсор указывает мне на строку, которая совпадает с введённым мной значением, но проблема в том, что если у меня есть 2 одинаковых значения, 2-ое не показывает, так вот как сделать что бы при нажатии Enter-а или ещё как-то мне перескакивало на все значения, которые я ввёл в Edit. как исправить следующий код
Delphi
1
if dm.Vra4i.Locate ('Specializaci9', Edit2.Text, []) then DBGrid2.SetFocus

2)Есть Edit в который ввожу название данных в определённом поле и при нажатии на кнопку, в label1 и label1 выводятся заданные значения, опять таки вопрос: как сделать что бы при повторном нажатии повторяющие записи отображались по очереди. Код.


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var LookupResult:Variant;
begin
LookupResult := dm.Vra4i.Lookup ('Specializaci9', Edit5.Text,'FIO;Stepeni');
if VarType (LookupResult) = varNull then
ShowMessage ('Нет такой специализации ' + Edit5.Text)
else if VarType (LookupResult) = varEmpty then
ShowMessage ('Поиск не произведён')
else if VarIsArray (LookupResult) then
begin
    Label1.Caption:='ФИО - ' + LookupResult[0];
    Label2.Caption:='Степени - ' + LookupResult[1];
end;
end;

и ещё, когда мы объявляем переменную var LookupResult:Variant; в LookupResult мы можем поместить только поля из символов, но не из цифр, можно это исправить?


3)ComboBox

Delphi
1
2
3
4
5
6
7
8
9
10
with dm.Vra4i do
  begin
  First;
    while not EOF do
    begin
       ComboBox1.Items.Add(dm.Vra4iSpecializaci9.Value);
       Next;
    end;
  end;
ComboBox1.Sorted:= true;
в ComboBox добавляются данные из таблицы врачи столбец специализация, при нажатии на одну из специализаций в ComboBox оно не появляется, просто поле остаётся пустое, нужно сделать что бы при выборе значения в ComboBox данные в DBGride сортировались, т.е. выводились только то поле, которое я выбрал в ComboBox. Пытался сделать следующий кодом но выдаёт ошибку(Column unknown KOD_VRA4A) при выборе специализации...


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TOBD.ComboBox1Select(Sender: TObject);
var x, y:string;
begin
with dm.Vra4i do
begin
DM.Vra4i.First;
x:=combobox1.Text;
while not(EOF) do
begin
 if (dm.Vra4iSpecializaci9.Value=x)
 then
 y:=IntToStr(dm.Vra4iKod_vra4a.Value);
 DM.Vra4i.Next;
 end;
end;
dm.Karto4ka.Filter := 'Kod_vra4a = '+QuotedStr(y)+'';
dm.Karto4ka.Filtered := true;
end;
код возможно не правильный....особенно начиная со строчки then

И ещё, как уже писалось выше есть повторяющиеся поля в данных столбцов, как в ComboBox сделать так что бы записи которых 2 и более не повторялись?

Буду благодарен за любую помощь. Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2014, 00:04
Ответы с готовыми решениями:

Delphi + InterBase
Здравствуйте. Делаю небольшой клиент для БД на Delphi 7 lite. Бд сделана на InterBase 6. Вообщем, создал алиас, указал путь к фалйлу БД....

Delphi и InterBase
Delphi и IB. В программе должно присутствовать разграничение пользователей по правам. В IB создал к примеру роль Buh назначил ей права...

InterBase+Delphi
Господа профи, всех приветствую, подскажите плизз ссылки или литературу, ну или просто совет как начать. нужно вот что: субд InterBase +...

12
2 / 2 / 1
Регистрация: 23.04.2012
Сообщений: 115
17.10.2014, 13:12
Эм, описывайте проблемы более внятно, читал через силу... И что за за бешеные названия полей и таблиц? Зайдите в гугл переводчик и назовите всё нормальынми словами а не сочитанием букв и цифр...

теперь по порядку
Давайте описывайте первую проблему только внятно нормально думая чт опишите, учитывайте что ваш проект ни кто не видел и не знает как он работает и совсем уж не понятно
в него я вписываю название данных в определённом поле
0
0 / 0 / 0
Регистрация: 06.10.2013
Сообщений: 61
17.10.2014, 14:50  [ТС]
ок.
У меня на панели DBGrid есть таблица, также снизу есть Edit, в который я вписываю данные из одной строки одного столбца моей таблицы(надеюсь понятно)... после ввода в edit мне выделяет одну из строк, которая совпадает с значением в Edite
вопрос заключается в том, что если у меня в таблице есть 2 одинаковых значения, то показывает только одну из строк, как сделать так что бы либо перескакивало либо при нажатии какой кнопки выделяло все одинаковые значения (либо по очереди по нажатию, либо все вместе)...
0
2 / 2 / 1
Регистрация: 23.04.2012
Сообщений: 115
17.10.2014, 15:01
ну уже лучше)))
сделайте через обычнй фильтр, сли будет два значения, то он их вам и покажет если больше покажет больше...
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
17.10.2014, 15:26
Человеку надо как в ворде: при поиске после позиционирования на строку с первым найденным вхождением, можно нажать что-то там и попасть на следующую, если такая есть. И так далее.
Sklif, ни в датасетах, ни в гриде нет механизмов такой навигации.
Из простых - это найти первое вхождение с помощью Locate, например, а дальше топать по набору данных и искать такую же строку (или часть ее) с помощью Next.
Только нужно при каждом нахождении запоминать на какой строке остановились и если дальше, дойдя до конца набора, не нашли, то вернуться на ту, которую запомнили. Иначе юзер ваш свихнется при поиске.

Или, как рассказал Доцент, фильтровать и показывать только те строки, которые удовлетворяют условиям поиска.
0
2 / 2 / 1
Регистрация: 23.04.2012
Сообщений: 115
17.10.2014, 15:55
Не вижу смысла шагать по записям, да и не могу сейчас вспомнить где нибудь такой функционал (да и для чего он нужен?), всё это прекрасно решается фильтром. ТС по первому вопросу всё?

Добавлено через 3 минуты
По второму. я Сейчас уже не помню как работает Loockup, но вроде если ты укажешь поле содержащие цифры то оно тебе вернётся (поля из символов, но не из цифр! выражайся правильнее)
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
17.10.2014, 15:55
Виноват, не обратил внимания, что это IB.
В TIBCustomDataSet (IBDataSet и его наследники) есть метод LocateNext как раз для реализации хотелки ТС,
Т.е. вместо Locate применяем LocateNext с теми же параметрами и тогда при очередном обращении к этому методу
он исправно будет отправлять на очередную найденную строку набора данных.
0
2 / 2 / 1
Регистрация: 23.04.2012
Сообщений: 115
17.10.2014, 15:59
по третьему

Delphi
1
2
dm.Karto4ka.Filter := 'Kod_vra4a = '+QuotedStr(IntToStr(dm.Vra4iKod_vra4a.FieldByName('ИМЯ ПОЛЯ С КОДОМ').asinteger))+'';
dm.Karto4ka.Filtered := true;
в событие onChange Комбобокса
0
0 / 0 / 0
Регистрация: 06.10.2013
Сообщений: 61
17.10.2014, 22:43  [ТС]
т.е. сделать так?
Delphi
1
if dm.Vra4i.LocateNext ('Specializaci9', Edit2.Text, []) then DBGrid2.SetFocus
Теперь не фокусит даже первое найденное значение

Добавлено через 3 минуты
по третьему
Delphi
1
dm.Karto4ka.Filter := 'Kod_vra4a = '+QuotedStr(IntToStr(dm.Vra4iKod_vra4a.FieldByName('ИМЯ ПОЛЯ С КОДОМ').
нельзя обратиться к FieldByName, его нету в списке...

а по второму всё таки, как по нажатию на кнопку сделать скачок на следующую повторяющуюся запись.

Всем спасибо, буду пробовать что-то делать)

Добавлено через 9 минут
сейчас почитал, думаю реализовать сортировку запросами, нужно посмотреть как это делается...
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
17.10.2014, 23:05
Теперь не фокусит даже первое найденное значение
У меня "фокусит" и очень даже неплохо. С первого и до последнего найденного. Видимо, не все в порядке в королевстве датском.
Но, действительно, этот метод применяют редко. Проще отсортировать набор чтобы требуемые значения шли подряд.
Тогда и прыгать по гриду нужды не будет.
0
0 / 0 / 0
Регистрация: 06.10.2013
Сообщений: 61
18.10.2014, 13:01  [ТС]
В общем добавил кнопку и сделал условие: если в edit введено например(Окулист) то таблица в dbgrid сортируется по введённому нами значению.
не подскажете как сделать что бы данные в столбце сортировались не по алфавиту, а по букве, которую я ввёл в коде...
0
2 / 2 / 1
Регистрация: 23.04.2012
Сообщений: 115
18.10.2014, 21:55
что бы данные в столбце сортировались не по алфавиту, а по букве, которую я ввёл в коде...
чего?) вы нормальн обьяснить можете?)_
0
0 / 0 / 0
Регистрация: 06.10.2013
Сообщений: 61
19.10.2014, 00:06  [ТС]
что ж Вы такой не понятливый?)) в общем я знаю как отсортировать по алфавиту, но когда я ввожу в Edit например(Окулист) мне надо что бы по нажатию на кнопку таблица отсортировалась, и "Окулист" стоял в таблице на первом месте, так вот как отсортировать данные не по алфавиту а по букве "О"? надеюсь понятно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2014, 00:06
Помогаю со студенческими работами здесь

delphi и interbase
как программно удалить все данные из таблицы в интербейсе?

Помагите с InterBase в Delphi
Здравствуйте. Помогите вот с чем: из всех записей кредитов, нужно посмотреть какая запись самая ближняя(по полю DATEVOZR), к текущему...

Подключение к InterBase из Delphi
Здравствуйте!!!!!!!!! Люди добрые Кто даст подробную инструкцию к подключению к InterBase из Delphi Требуется. 1) Подключится к...

Delphi + InterBase + SQL
Товарищи помогите реализовать удаление выбранной записи из DBGrid при том что у меня выводятся не все колонки, а та которая не выводится...

Связка Delphi с Interbase
Объясните в чем проблема. Есть база данных на IB. В SQL Explrer'e она подхватывается, указал ее Alias, все отлично. То есть среда Delphi...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru