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

Добавление записи в БД

10.06.2016, 12:57. Показов 2880. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый помогите разобраться с ошибкой. При добавлении записи выдает ошибку о том что не может найти поля для ввода, хотя компонент IBDataSet активирован.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            DM_GIS.IBDataSetPACIENT.Close;
            DM_GIS.IBDataSetPACIENT.InsertSQL.Clear;
            DM_GIS.IBDataSetPACIENT.InsertSQL.Add('insert into PACIENT (UIN, FNAME, INAME, ONAME, SEX, BIRTHDAY, SNILS, USERNAME, DATEREG, CANCER_STAT, NAPR_STAT)');
            DM_GIS.IBDataSetPACIENT.InsertSQL.Add('values (:UIN, :FNAME, :INAME, :ONAME, :SEX, :BIRTHDAY, :SNILS, :USERNAME, :DATEREG, :CANCER_STAT, :NAPR_STAT)');
            DM_GIS.IBDataSetPACIENT.Open;
 
            DM_GIS.IBDataSetPACIENT.ParamByName('FNAME').Value := Form3.edtFNAME.Text;
            DM_GIS.IBDataSetPACIENT.ParamByName('INAME').Value := Form3.edtINAME.Text;
            DM_GIS.IBDataSetPACIENT.ParamByName('ONAME').Value := Form3.edtONAME.Text;
            DM_GIS.IBDataSetPACIENT.ParamByName('SEX').Value := Form3.edtSEX.Text;
            DM_GIS.IBDataSetPACIENT.ParamByName('BIRTHDAY').Value := StrToDate(Form3.medtBIRTHDAY.Text) ;
            DM_GIS.IBDataSetPACIENT.ParamByName('SNILS').Value := Form3.medtSNILS.Text;
            DM_GIS.IBDataSetPACIENT.ParamByName('USERNAME').Value := frmAUTORIZED.dblkcbb1.Text;
            DM_GIS.IBDataSetPACIENT.ParamByName('DATEREG').Value := Now;
            DM_GIS.IBDataSetPACIENT.ParamByName('CANCER_STAT').Value := 0;
            DM_GIS.IBDataSetPACIENT.ParamByName('NAPR_STAT').Value := 0;
 
            DM_GIS.IBDataSetPACIENT.Transaction.StartTransaction;
            DM_GIS.IBDataSetPACIENT.ExecSQL;
            DM_GIS.IBDataSetPACIENT.Transaction.Commit;
            DM_GIS.IBDataSetPACIENT.Open;
Миниатюры
Добавление записи в БД  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2016, 12:57
Ответы с готовыми решениями:

Добавление записи в БД
Уважаемые форумачне, quwy! Помогите одолеть сложность: есть БД, в ней 2 таблицы, необходимо при добавлении новой записи в одной таблице,...

Добавление записи в БД
Знаю тем много! сейчас разобрался как заполнять 1 табличку через sql запрос а как правильно написать запрос для добавление записи в...

Добавление записи в бд
Таблица "Служебные" id - счетчик Таблица "Личные" id - числовой Как добавлять записи одновременно? Ниже код, не работает ...

13
5971 / 4547 / 1094
Регистрация: 29.08.2013
Сообщений: 28,168
Записей в блоге: 3
10.06.2016, 13:13
в БД не может его найти, при чем тут компонент?
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
10.06.2016, 13:17
Вообще-то ошибка читается иначе. Поле FNAME не найдено, т.е. оно отсутствует в наборе данных IBDataSetPACIENT и это в общем-то логично т.к. запрос у вас на вставку, а не на чтение данных.
0
 Аватар для ВасильевСА
8 / 8 / 2
Регистрация: 01.12.2015
Сообщений: 195
10.06.2016, 13:27  [ТС]
Я так предполагаю.
через нижеприведенный код все проходит.
Delphi
1
IBDataset.FieldByName('поле').AsString := s;
Добавлено через 10 минут
Что мне нужно исправить?
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
10.06.2016, 13:51
Если вы хотели посмотреть результат после вставки, то запрос надо сначала изменить, а уже потом его открывать:
Delphi
1
DM_GIS.IBDataSetPACIENT.InsertSQL.SQL.Text := 'select * from Pacient';
а вот теперь можно и открыть:
Delphi
1
DM_GIS.IBDataSetPACIENT.Open;
0
 Аватар для ВасильевСА
8 / 8 / 2
Регистрация: 01.12.2015
Сообщений: 195
10.06.2016, 14:11  [ТС]
Я как раз вставить не могу, ругается на поле что оно не найдено
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
10.06.2016, 14:28
покажите SelectSQL и RefreshSQL
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
10.06.2016, 14:31
Структуру таблицы Pacient тоже покажите.
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
10.06.2016, 14:39
Цитата Сообщение от ВасильевСА Посмотреть сообщение
DM_GIS.IBDataSetPACIENT.Open;
Вот эта строчка зачем нужна?
0
 Аватар для ВасильевСА
8 / 8 / 2
Регистрация: 01.12.2015
Сообщений: 195
10.06.2016, 15:31  [ТС]
SQL
1
SELECT * FROM PACIENT ORDER BY FNAME;
Refresh
SQL
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
SELECT 
  UIN,
  FNAME,
  INAME,
  ONAME,
  SEX,
  BIRTHDAY,
  SNILS,
  USERNAME,
  DATEREG,
  CANCER_STAT,
  NAPR_STAT
FROM PACIENT 
WHERE
  UIN = :UIN AND
  FNAME = :FNAME AND
  INAME = :INAME AND
  ONAME = :ONAME AND
  SEX = :SEX AND
  BIRTHDAY = :BIRTHDAY AND
  SNILS = :SNILS AND
  USERNAME = :USERNAME AND
  DATEREG = :DATEREG AND
  CANCER_STAT = :CANCER_STAT AND
  NAPR_STAT = :NAPR_STAT
Добавлено через 34 минуты
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE PACIENT (
    UIN          INTEGER,
    FNAME        VARCHAR(30),
    INAME        VARCHAR(30),
    ONAME        VARCHAR(30),
    SEX          VARCHAR(10),
    BIRTHDAY     DATE,
    SNILS        VARCHAR(15),
    USERNAME     VARCHAR(25),
    DATEREG      DATE,
    CANCER_STAT  INTEGER,
    NAPR_STAT    INTEGER
);
Добавлено через 2 минуты
Уже интересно почему вышеприведенный код не работает а этот работает без проблем!?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            DM_GIS.IBDataSetPACIENT.Append;
            DM_GIS.IBDataSetPACIENT.FieldByName('FNAME').AsString := Form3.edtFNAME.Text;
            DM_GIS.IBDataSetPACIENT.FieldByName('INAME').AsString := Form3.edtINAME.Text;
            DM_GIS.IBDataSetPACIENT.FieldByName('ONAME').AsString := Form3.edtONAME.Text;
            DM_GIS.IBDataSetPACIENT.FieldByName('BIRTHDAY').AsDateTime := StrToDate(Form3.medtBIRTHDAY.Text);
            DM_GIS.IBDataSetPACIENT.FieldByName('SEX').AsString := Form3.edtSEX.Text;
            DM_GIS.IBDataSetPACIENT.FieldByName('SNILS').AsString := Form3.medtSNILS.Text;
            DM_GIS.IBDataSetPACIENT.FieldByName('USERNAME').AsString := frmAUTORIZED.dblkcbb1.Text;
            DM_GIS.IBDataSetPACIENT.FieldByName('DATEREG').AsDateTime := Now;
            DM_GIS.IBDataSetPACIENT.FieldByName('CANCER_STAT').AsInteger := 0;
            DM_GIS.IBDataSetPACIENT.FieldByName('NAPR_STAT').AsInteger := 0;
            DM_GIS.IBDataSetPACIENT.Post;
            DM_GIS.ibtrnsPACIENT.Commit;
            DM_GIS.IBDataSetPACIENT.Open;
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
10.06.2016, 23:21
Лучший ответ Сообщение было отмечено ВасильевСА как решение

Решение

я всегда против использования звездочек в таком коде
расписать все нужные поля, в Field Editor создать для них persistent fields и в программе обращаться уже к объекту поля, без 100500 раз поиска FieldByName(...)
Обычно это выглядит
DM_GIS.IBDataSetPACIENTBIRTHDAY.AsDateTi me;
ну и по-хорошему IBDataSetPACIENT сокращается до qPatient
и получается удобное и более быстрое есс-но
DM_GIS.qPatientBIRTHDAY.AsDateTime;

а верхний код не работает потому что надо заполнять не Params а Fields
так устроен набор компонентов
он за вас там все передаст куда надо
1
11.06.2016, 00:32

Не по теме:

Цитата Сообщение от krapotkin Посмотреть сообщение
так устроен набор компонентов
Вот никогда не лежала у меня душа к IB компонентам. Всё там какой-то нетрадиционной ориентации :)

0
 Аватар для ВасильевСА
8 / 8 / 2
Регистрация: 01.12.2015
Сообщений: 195
11.06.2016, 05:19  [ТС]
Большое вам человеческое спасибо��
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
11.06.2016, 08:02
вот имхо по сравнению с ADO как раз именно IBX гораздо более удобны и прозрачны...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2016, 08:02
Помогаю со студенческими работами здесь

Добавление записи в БД
Приветствую! Ребята хочу добавить запись в ручную, через edit, не получается, короткие слова вводит до 8 символов, свыше 8 выбивает...

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

Добавление записи в бд
что-то не получается, вроде все правильно, tbl1.active=true;

Добавление записи в БД
Здравствуйте, у меня возникла проблема. существует база данных, в ней есть справочник Магазины, мне нужно добавить туда новую запись. ...

Добавление записи в таблицу
Всем здравствуйте! Начал работать с базой данных FireBird через Delphi, возникла следующая ошибка: для добавления записи использую...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru