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

"Не удается вставить пустую строку. Необходим хотя бы один столбец значений" при вставке строки в грид

18.10.2018, 00:00. Показов 2892. Ответов 15

Студворк — интернет-сервис помощи студентам
Добрый вечер. Вот, собственно, вылетает такая ошибка, когда вставляю новую строку в грид.
У меня 2 грида на 2 формах, а на 3-ей добавляю записи. И при одинаковом коде для этих гридов, добавляется только одна строка в 1 форму, а на второй - нет.
Код на кнопке "Сохранить" на 3-ей форме:
Delphi
1
2
DataModule5.qry1.Insert;
DataModule5.qry3.Insert;
Код на 1 форме в кнопке "Добавить новую запись":
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm2.btn2Click(Sender: TObject);
begin
DataModule5.qry1.Append;
DataModule5.qry3.Last;
DataModule5.qry3.Append;
DataModule5.qry3.Close;
DataModule5.qry3.Parameters[0].Value:=DataModule5.qry1.FieldByName('Kod').Value;
DataModule5.qry3.Open;
if Form6.showmodal=mrOk then
begin
DataModule5.qry1.Post;
DataModule5.qry3.Post;
end
else
begin
DataModule5.qry1.Cancel;
DataModule5.qry3.Cancel;
end;
end;
Что не так?... Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2018, 00:00
Ответы с готовыми решениями:

Ошибка: Не удаётся вставить пустую строку. Необходим хотя бы один столбец значений
Здравствуйте программисты! Помогите исправить ошибку. Требуется написать курсовую работу "Тестирование в делфи". Форма с...

Поиск в БД: 'Не удается вставить пустую строку.Необходим хотя бы один столбец значений'
Помогите новичку!%) Не пойму, почему выдает сообщение: 'Не удается вставить пустую строку.Необходим хотя бы один столбец значений' на...

Не удается вставить пустую строку
В форме имеется 4 edit для добавления инфы в бд. Так вот, после ввода фамилии в первый edit и затем при поптыке ввести данные в edit для...

15
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
18.10.2018, 02:23
Цитата Сообщение от Darres Посмотреть сообщение
Код на 1 форме в кнопке "Добавить новую запись":
Явно бредовый.
Вот именно этот кусок
Delphi
1
2
3
DataModule5.qry3.Last;
DataModule5.qry3.Append;
DataModule5.qry3.Close;
Либо вы приводите весь код вашей программы, либо я не знаю куда вас послать
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
18.10.2018, 07:07
Цитата Сообщение от Darres Посмотреть сообщение
Что не так?
ВСЕ! Скрещиваете ужа с ежом... Намешали в кучу методы для работы с таблицами и методы работы с запросами... В общем - галиматья...
0
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
18.10.2018, 22:24  [ТС]
D1973,
Цитата Сообщение от D1973 Посмотреть сообщение
В общем - галиматья...
Ок.
Я вообще-то хочу понять как все-таки добавить запись в 2 таблицы.
При простом коде, без запроса:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm2.btn2Click(Sender: TObject);
begin
DataModule5.qry1.Append;
DataModule5.qry3.Append;
if Form6.showmodal=mrOk then
begin
DataModule5.qry1.Post;
DataModule5.qry3.Post;
end
else
begin
DataModule5.qry1.Cancel;
DataModule5.qry3.Cancel;
end;
end;
- программа выдает ту же ошибку.

Если добавлять запись только в 1 таблицу:
Delphi
1
2
3
4
5
6
7
8
procedure TForm2.btn2Click(Sender: TObject);
begin
DataModule5.qry1.Append;
if Form6.showmodal=mrOk then
DataModule5.qry1.Post;
else
DataModule5.qry1.Cancel;
end;
- программа работает нормально.

Почему Delphi требует столбец со значением, когда я пытаюсь вставить сразу в 2 таблицы?
В 2-х таблицах есть поля с одним и тем же типом "Счетчик", я видела как счетчик автоматически добавляется в 1-ой таблице (во 2-ой не видела, т.к. кнопка с добавлением записи находится на 1 форме с 1 таблицей).
Насчет запроса, программа когда-то ругалась на отсутствие связей, поэтому кое-как пыталась установить ее. Мне запрос не особо важен, это просто проба.

Добавлено через 8 минут
northener,
Цитата Сообщение от northener Посмотреть сообщение
Либо вы приводите весь код вашей программы
В остальном ничего особенного , просто открыть форму, закрыть. Кроме экспериментов с кодом, я еще создала связи между таблицами во вкладке Diagram, как-то так...
Не подскажете, как написать код правильно?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
19.10.2018, 02:38
Цитата Сообщение от Darres Посмотреть сообщение
В остальном ничего особенного
Ну если программа настолько секретна, приведите хотя бы код формы 6. Обязательно и pas-файл и dfm-файл.

Цитата Сообщение от Darres Посмотреть сообщение
Не подскажете, как написать код правильно?
Возможно с этого вопроса вам и стоило начинать. Но для того чтобы ответить на этот вопрос нужно чтобы вы описали ту задачу, которую вы пытаетесь решить. Или формулировку учебного задания.
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
19.10.2018, 04:50
Цитата Сообщение от Darres Посмотреть сообщение
я еще создала связи между таблицами во вкладке Diagram
Darres, связи между таблицами делаются средствами СУБД - и никак иначе... И данные в связанные таблицы добавляются поочередно - сначала в основную, потом в подчиненные...
А вообще гадать, что там у Вас, без проекта и без ТехЗадания - занятие абсолютно бесперспективное. Оглашайте точное задание и СУБД, с которой работаете.
0
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
19.10.2018, 20:23  [ТС]
northener,
pas-файл 3 формы (Form 6):
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
unit Unit6;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtDlgs, jpeg, DBCtrls, Mask, ExtCtrls;
type
  TForm6 = class(TForm)
    btn1: TBitBtn;
    btn2: TBitBtn;
    dlgOpenPic1: TOpenPictureDialog;
    dbedt2: TDBEdit;
    dbcbb1: TDBComboBox;
    dbedt3: TDBEdit;
    dbedt4: TDBEdit;
    dbedt5: TDBEdit;
    img1: TImage;
    dbmmo1: TDBMemo;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form6: TForm6;
implementation
uses Unit5;
{$R *.dfm}
 
procedure TForm6.btn1Click(Sender: TObject);
var
 jpeg:TJPEGImage;
   bmp:TBitmap;
begin
   if dlgOpenPic1.Execute then
  begin
  jpeg := TJPEGImage.Create;
    bmp := TBitmap.Create;
    try
      jpeg.LoadFromFile(dlgOpenPic1.FileName);
      bmp.Assign(jpeg);
      DataModule5.qry1.Edit;
      DataModule5.qry1.FieldByName('Èçîáðàæåíèå').Assign(bmp);
      DataModule5.qry1.Post;
    finally
      jpeg.Free;
      bmp.Free;
    end;
    end;
    end;
 
procedure TForm6.btn2Click(Sender: TObject);
begin
DataModule5.qry1.Insert;
if DataModule5.qry1.Modified then DataModule5.qry3.Post;
DataModule5.qry3.Insert;
modalResult:=mrOk;
end;
 
procedure TForm6.btn3Click(Sender: TObject);
begin
Form6.Close;
end;
end.
Не знаю в каком виде Вы хотите посмотреть dfm-файл, поэтому представлю все. Dfm-файл в текстовом виде:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
object Form6: TForm6
  Left = 467
  Top = 30
  Width = 717
  Height = 648
  Caption = 'Заполнение'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object img1: TImage
    Left = 0
    Top = 0
    Width = 701
    Height = 609
    Align = alClient
    Picture.Data = { /*много букв и цифр, цвет этого абзаца - зеленый, курсив*/ }
 Stretch = True
  end
  object btn1: TBitBtn
    Left = 104
    Top = 280
    Width = 145
    Height = 25
    Caption = 'Добавить фото'
    TabOrder = 0
    OnClick = btn1Click
  end
  object btn2: TBitBtn
    Left = 104
    Top = 328
    Width = 145
    Height = 25
    Caption = 'Сохранить'
    TabOrder = 1
    OnClick = btn2Click
  end
  object dbedt2: TDBEdit
    Left = 128
    Top = 64
    Width = 121
    Height = 21
    DataField = 'Название'
    DataSource = DataModule5.ds1
    TabOrder = 2
  end
  object dbcbb1: TDBComboBox
    Left = 128
    Top = 104
    Width = 145
    Height = 21
    DataField = 'Группа'
    DataSource = DataModule5.ds1
    ItemHeight = 13
    Items.Strings = (
      'Травянистое'
      'Кустарник'
      'Дерево'
      'Суккулент')
    TabOrder = 3
  end
  object dbedt3: TDBEdit
    Left = 128
    Top = 144
    Width = 121
    Height = 21
    DataField = 'Семейство'
    DataSource = DataModule5.ds1
    TabOrder = 4
  end
  object dbedt4: TDBEdit
    Left = 136
    Top = 184
    Width = 121
    Height = 21
    DataField = 'Происхождение'
    DataSource = DataModule5.ds1
    TabOrder = 5
  end
  object dbedt5: TDBEdit
    Left = 136
    Top = 224
    Width = 121
    Height = 21
    DataField = 'Размер'
    DataSource = DataModule5.ds1
    TabOrder = 6
  end
  object dbmmo1: TDBMemo
    Left = 368
    Top = 240
    Width = 185
    Height = 89
    DataField = 'Освещение'
    DataSource = DataModule5.ds3
    TabOrder = 7
  end
  object dlgOpenPic1: TOpenPictureDialog
    Left = 280
    Top = 328
  end
end
Цитата Сообщение от northener Посмотреть сообщение
нужно чтобы вы описали ту задачу, которую вы пытаетесь решить. Или формулировку учебного задания.
Цитата Сообщение от Darres Посмотреть сообщение
добавить запись в 2 таблицы.
Если подробнее - нужно добавить данные с dbEdit, dbMemo и т.п. с 3-ей формы в 2 таблицы. 1 таблица в 1-ой форме, другая - во 2-ой.
Миниатюры
"Не удается вставить пустую строку. Необходим хотя бы один столбец значений" при вставке строки в грид  
0
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
19.10.2018, 20:31  [ТС]
D1973,
Цитата Сообщение от D1973 Посмотреть сообщение
СУБД, с которой работаете.
MS Access.
Цитата Сообщение от D1973 Посмотреть сообщение
Оглашайте точное задание
Цитата Сообщение от Darres Посмотреть сообщение
нужно добавить данные с dbEdit, dbMemo и т.п. с 3-ей формы в 2 таблицы. 1 таблица в 1-ой форме, другая - во 2-ой.


Цитата Сообщение от D1973 Посмотреть сообщение
И данные в связанные таблицы добавляются поочередно - сначала в основную, потом в подчиненные...
Я так поняла - сначала в 1 таблицу добавить, потом снова вызвать форму, чтобы добавить в 2-ую, или как?
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
19.10.2018, 20:44
Darres, вот перед Вами такую же задачу поставили?
Цитата Сообщение от Darres Посмотреть сообщение
нужно добавить данные с dbEdit, dbMemo и т.п. с 3-ей формы в 2 таблицы. 1 таблица в 1-ой форме, другая - во 2-ой
Или все таки как-то более вменяемо техзадание звучало?
Цитата Сообщение от Darres Посмотреть сообщение
Не знаю в каком виде Вы хотите посмотреть dfm-файл
Да Вас проект просили заархивировать и выложить сюда. Все файлы *.pas, *.dfm, *.dpr и файл Вашей БД - все в один архив и сюда прикрепить...
0
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
19.10.2018, 21:11  [ТС]
D1973,
Цитата Сообщение от D1973 Посмотреть сообщение
вот перед Вами такую же задачу поставили? Или все таки как-то более вменяемо техзадание звучало?
Техзадания нет, это собственный проект. Не знаю, как поконкретнее сформулировать. "Добавить связную запись в 2 таблицы, по 1-ой таблице на отдельных формах. Например, запись №32 добавить в 2 таблицы (в 1-ых столбцах этих таблиц "Код" чтоб показывало значение 32, а там дальше данные, допустим так: в 1-ой таблице "Код -32, Название - Герань", во 2-ой "Код -32, легкость выращивания - Легкое")", - так лучше?

Цитата Сообщение от D1973 Посмотреть сообщение
Да Вас проект просили заархивировать и выложить сюда. Все файлы *.pas, *.dfm, *.dpr и файл Вашей БД - все в один архив и сюда прикрепить...
не похоже, чтоб именно так просили -
Цитата Сообщение от northener Посмотреть сообщение
Ну если программа настолько секретна, приведите хотя бы код формы 6. Обязательно и pas-файл и dfm-файл.
только отдельные файлы, не весь проект.
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
19.10.2018, 21:24
Цитата Сообщение от D1973 Посмотреть сообщение
А вообще гадать, что там у Вас, без проекта и без ТехЗадания - занятие абсолютно бесперспективное
0
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
19.10.2018, 21:57  [ТС]
D1973, у Accessa большой размер (в rar 23 199 Kb), несмотря на то, что там минимум информации, поэтому могу отправить проект без бд...
Вложения
Тип файла: rar delphi.rar (1.87 Мб, 4 просмотров)
0
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
19.10.2018, 22:01  [ТС]
Цитата Сообщение от Darres Посмотреть сообщение
у Accessa большой размер (в rar 23 199 Kb), несмотря на то, что там минимум информации, поэтому могу отправить проект без бд...
только так могу представить, чтоб наглядней было
Миниатюры
"Не удается вставить пустую строку. Необходим хотя бы один столбец значений" при вставке строки в грид  
0
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
21.10.2018, 12:00  [ТС]
ап
ап
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
21.10.2018, 19:47
Проект без БД не имеет никакого смысла.

В Аксессе есть команда "сжать и восстановить" базу (её дефрагментация). Может быть эта операция позволит существенно уменьшить объем файла.
1
 Аватар для Darres
2 / 1 / 1
Регистрация: 07.11.2016
Сообщений: 45
21.10.2018, 19:58  [ТС]
Скандербег, спасибо, теперь скидываю полный проект, с бд
Вложения
Тип файла: rar delphi.rar (2.46 Мб, 7 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2018, 19:58
Помогаю со студенческими работами здесь

После столбцов, содержащих хотя бы один элемент Y , вставить столбец X
Дан массив, содержащий целые числа, размерностью n×n. Использовать дополнительные массивы нельзя. Выполнить следующее действие: После...

LookupComboBox: "Не удается вставить пустую строку"
Всем привет дорогие участники. Я у вас впервые. И вот решил обратиться к вам за помощью. Суть моей проблемы в том что в форме...

Вставить пустую строку после строки файла с номером K
Text10. Дано целое число K и текстовый файл. Вставить пустую строку после строки файла с номером K. Если строки с таким номером нет, то...

Вставить пустую строку после строки файла с номером К
Дано целое число K и текстовый файл. Вставить пустую строку после строки файла с номером К. Если строки с таким номером нет, то оставить...

Вставить пустую строку после строки файла с номером K.
Дано целое число K и текстовый файл. Вставить пустую строку после строки файла с номером K. Если строки с таким номером нет, то оставить...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru