17 / 17 / 4
Регистрация: 06.07.2012
Сообщений: 510

Изменения в базе данных не сохраняются

22.07.2013, 17:19. Показов 2974. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Я начал делать программу-регистрационный лист для соревнований, где сохраняются команды.
Программа устроена следующим образом: есть база данных, в ней есть таблица "Общая таблица участников", есть таблица "Пары", есть таблица "Таблица пар".
Когда участник приходит, то он заполняет регистрационный лист программы. Там он указывает имя, фамилию, отчество, телефон, и название команды. После нажатия кнопки сохранения регистрации сначала в таблицу "Общая таблица участников" заносятся имя, фамилия, и т.п.. Если команды не существует, то в таблице "Таблица пар" создается строка с его (регистрирующегося участника) ключём (ключ определяется с помощью комбинации функций SelectPerson и GetUsual - код приложен ниже). ключ сохраняется в первое поле "таблицы пар". В "Парах" создается строка с полем "общий номер пары" и полем "место в соревнованиях". Общий номер пары определяется по ключу в "таблице пар". Место в соревнованиях определяется после соревнований. Если участник пришел после первого, то просто в таблице пар сохраняется его ключ в другом поле.
Но когда я написал код к программе, я обнаружил, что когда сохраняется команда в "Парах", то создается лишь пустая строка, а значение "общий номер пары" остается пустым. Подскажите - в чём проблема?
Заранее благодарен.

Код SelectPerson:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function TFRegistrationForm.SelectPerson(phone:string):boolean;
var NoErrors:boolean;
begin
NoErrors:=true;
try
 
NoErrors:=DBComponents.TAll.Locate('Телефон',
                         phone,
                         []);
 
 
except
NoErrors:=false;
end;
Result:=NoErrors;
end;
Код GetUsual:
Delphi
1
2
3
4
function TFRegistrationForm.GetUsual:integer;
begin
Result:=DBComponents.TAll.FieldByName('Код').Value;
end;
Код функции, с помощью которой я выделяю нужную строку пар:
Delphi
1
2
3
4
5
6
function TFRegistrationForm.SelectPair(PairName:string):boolean;
begin
Result:=DBComponents.TPairTable.Locate('Название пары',
                               PairName,
                               []);
end;
Код функции отправки в базу данных "пар":
Delphi
1
2
3
4
5
procedure TFregistrationForm.PostPairTable;
begin
DBComponents.TPairTable.Edit;
DBComponents.TPairTable.Post;
end;
Код функции отправки в базу данных "таблицы пар":
Delphi
1
2
3
4
5
procedure TFregistrationForm.PostPair;
begin
DBComponents.TPair.Edit;
DBComponents.TPair.Post;
end;
Код функции, с помощью которой я пытаюсь сохранить изменения:
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
function TFRegistrationForm.RegisterPair:boolean;
 
 
var NoError:boolean;
IsPair:boolean;
 
begin
NoError:=true;
with DBComponents.TPairTable do
    begin
 
      try
          SelectPerson(EPhone.Text);
          IsPair:=SelectPair(EPairName.Text);
          if not IsPair then append;
 
          Edit;
          if not IsPair then
            begin
              FieldByName('Общий номер 1-ого участника(цы)').Value:=GetUsual;
              FieldByName('Название пары').Value:=EPairName.Text;
 
              DBComponents.TPair.append;
              DBComponents.TPair.Edit;
              DBComponents.TPair.FieldByName('Номер пары').Value:=FieldByName('Код').Value;
              PostPair;
            end
            else FieldByName('Общий номер 2-ого участника(цы)').Value:=GetUsual;
 
            PostPairTable;
            PostPair;
      except
        NoError:=false;
      end;
    end;
 
Result:=NoError;
end;
Возможно я пропустил какие-то функции. Если да, то я отредактирую тему.
Подскажите - почему не сохраняется номер пары?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.07.2013, 17:19
Ответы с готовыми решениями:

Не сохраняются изменения в базе данных
procedure TFCreateUser.BUserCreateClick(Sender: TObject); begin MySQLQ.SQL.Text:='insert into users (Login,Password) values (' ...

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

Не сохраняются изменения в базе данных
Следующая проблема: есть база данных MS Acсess. надо внести изменения в бд в рантайм режиме вот код который не работает хотя должен ...

6
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
22.07.2013, 20:56
Самое первое что вы должны сделать - назвать СУБД с которой работаете.
Второе, и тоже обязательно, с помощью каких компонентов происходит доступ к БД.
Все эти названия: DBComponents.TAll, TPair, TPairTable никому и ни о чем не говорят.
0
17 / 17 / 4
Регистрация: 06.07.2012
Сообщений: 510
22.07.2013, 22:11  [ТС]
MS Access.
В DBComponents лежит все, что необходимо для работы сети. В нем компоненты устроены следующим образом:
ADOConnection-TPair(пары)/TPairTable(таблица пар)/TAll(Общая таблица)
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
22.07.2013, 23:23
1. Вместо Append используй Insert. Не принципиально в дан.случае, но когда-нибудь грабли с Append выстрелят.

2. Вызов Append или Insert не нуждается в последующем вызове Edit.

3. Вызов Post в твоем коде не нуждается в предшествующем явно лишнем вызове Edit, ибо на момент вызова Post НД и так уже находится в режиме редактирования новой или существующей записи.
0
Эксперт Pascal/Delphi
 Аватар для droider
4889 / 2823 / 865
Регистрация: 04.10.2012
Сообщений: 10,268
23.07.2013, 04:45
proggamer12,

Не по теме:

Вы просили дать ответ? Он у Вас есть.
В чем еще проблема?

0
17 / 17 / 4
Регистрация: 06.07.2012
Сообщений: 510
19.08.2013, 13:20  [ТС]
droider
По части какого сообщения претензия?

Добавлено через 1 минуту
Кстати, проблема была в том, что, почему-то компьютер не мог работать вперемешку с несколькими TADOTable-ами. Я просто сохранял в переменные нужные мне значения, а потом вставлял их в другую таблицу, а не копировал в одну строку таблицы значение другой строки таблицы.
0
Эксперт Pascal/Delphi
 Аватар для droider
4889 / 2823 / 865
Регистрация: 04.10.2012
Сообщений: 10,268
19.08.2013, 14:04
Цитата Сообщение от proggamer12 Посмотреть сообщение
По части какого сообщения претензия?
это был вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.08.2013, 14:04
Помогаю со студенческими работами здесь

Не сохраняются изменения в базе данных
Огромный привет обитателям этого форума. У меня возникла проблема с обновлением базы данных, обрисую как должна работать программа. Имеется...

Не сохраняются изменения в базе данных
Доброго времени суток. Столкнулся с проблемой несохранения изменений в базе данных. Читал похожие темы, в том числе и на этом форуме -...

Не сохраняются изменения в базе данных
Привет всем. Есть класс NoteBook public class NoteBook { public string ConnectionString { get; set; } ...

Изменения не сохраняются в базе данных
Доброго времени суток. У меня не сохраняются изменения, внесенные в локальную базу данных. Прочитал о похожих проблемах на разных форумах,...

Не сохраняются изменения в базе данных MySQL
Доброго времени суток, имеется класс подключения к базе данных: using System; using System.Collections.Generic; using System.Data; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru