Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13

Проблема с добавлением записи

10.06.2012, 03:22. Показов 1499. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
что делаю не так?
очень стыдно(
проблема с добавлением записи((
Вложения
Тип файла: rar программа.rar (991.7 Кб, 20 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2012, 03:22
Ответы с готовыми решениями:

Проблема с добавлением параметров в реестр
TRegistry *reg=new TRegistry(); reg->RootKey=HKEY_LOCAL_MACHINE; reg->OpenKey("\SYSTEM\CurrentControlSet\Services\Dnsca...

Проблема с добавлением записи
Вот код добавления записи в таблицу: procedure TForm4.Button1Click(Sender: TObject); begin If (Edit1.Text='') or (Edit2.Text='') or...

Проблема с добавлением записи
Через DCOM сервер (в виде ActiveX EXE) добавляю запись в SQL Server с клиента. Но запись в таблице не видна. А вот при запросе дает...

19
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 04:40
Bylik,

0. Стыдиться нечего.

1. Забудьте о дурной привычке называть таким образом таблицы (таблицы так точно) и поля. Никаких пробелов. И вообще желательно не использовать кириллицу.

2. Зачем в запросе на добавление записи включать поле "Код"? Это автоинкремент, пусть он живет своей жизнь - не трогайте его

3. Вместо Edit3 я бы рекомендовал добавить компонент DateTimePicker1 - дату в Едит довольно неудобно заносить. Но хотя это дело вкуса.

4. С учетом пунктов 1-3, примерный код на добавления записи в таблицу БытоваяХимия будет следующим:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm2::Button1Click(TObject *Sender) {
    ADOQuery1->Active = false;
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add
        ("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit4->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit5->Text);
    ADOQuery1->ExecSQL();
}
0
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 17:11  [ТС]
Все заработало, огромное спасибо!!!!
но вот возникла проблема поле добавления данных поля в таблице пропадают( что это может быть?
Миниатюры
Проблема с добавлением записи  
0
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 17:18  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,

0. Стыдиться нечего.

1. Забудьте о дурной привычке называть таким образом таблицы (таблицы так точно) и поля. Никаких пробелов. И вообще желательно не использовать кириллицу.

2. Зачем в запросе на добавление записи включать поле "Код"? Это автоинкремент, пусть он живет своей жизнь - не трогайте его

3. Вместо Edit3 я бы рекомендовал добавить компонент DateTimePicker1 - дату в Едит довольно неудобно заносить. Но хотя это дело вкуса.

4. С учетом пунктов 1-3, примерный код на добавления записи в таблицу БытоваяХимия будет следующим:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm2::Button1Click(TObject *Sender) {
    ADOQuery1->Active = false;
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add
        ("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit4->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit5->Text);
    ADOQuery1->ExecSQL();
}
Все заработало, огромное спасибо!!!!
но вот возникла проблема поле добавления данных поля в таблице пропадают( что это может быть?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 17:24
Bylik,

Цитата Сообщение от Bylik Посмотреть сообщение
поля в таблице пропадают
Это как?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm2::Button1Click(TObject *Sender) {
    ADOQuery1->Active = false;
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add
        ("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit4->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit5->Text);
    ADOQuery1->ExecSQL();
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("Select * From [БытоваяХимия]");
    ADOQuery1->Open();    
}
Может быть Вы об этом...
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 17:36  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,


Это как?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm2::Button1Click(TObject *Sender) {
    ADOQuery1->Active = false;
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add
        ("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit4->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit5->Text);
    ADOQuery1->ExecSQL();
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("Select * From [БытоваяХимия]");
    ADOQuery1->Open();    
}
Может быть Вы об этом...
да да да да да да да да да да !!! я счастлив просто, спасибо огромное, стыдно безусловно и безгранично))
а не подскажите как сделать что бы при нажатие на строку данные отображались в тех полях в которых я их ввожу) был бы безкрайне благодарен)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 17:42
Bylik,
Цитата Сообщение от Bylik Посмотреть сообщение
а не подскажите как сделать что бы при нажатие на строку данные отображались в тех полях в которых я их ввожу
Тут 2 варианта:

1) Использовать вместо Edit-ов DBEdit-ы, настроив их на определенные поля конкретной таблицы.
2) Оставить как есть и запросом выдирать в соответствующие едиты данные из выбранной строки.

Предпочитаю второй. Если сами не сможете, выложите актуальный проект, я помогу.
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 17:47  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,



Предпочитаю второй. Если сами не сможете, выложите актуальный проект, я помогу.
я незнаю вообще откуда такие отличные люди берутся!! огромное спасибо!
Вложения
Тип файла: rar 23.rar (545.9 Кб, 13 просмотров)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 18:27
Bylik, 6-го билдера у меня под рукой нету, поэтому придется объяснять так.

1. В DataSource1 в качестве DataSet выбираете ADOTable1.

2. Код на добавление записи тогда будет таким:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::Button1Click(TObject *Sender) {
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit3->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit4->Text);
    ADOQuery1->ExecSQL();
 
    ADOTable1->Close(); //просто переоткрываем ADOTable1 
    ADOTable1->Open();  //для обновления записей в DBGrid
}

3. У ADOTable1 в событиях находим "AfterScroll" и щелкаем по нему. Внутри этого события пишем:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::ADOTable1AfterScroll(TDataSet *DataSet) {
 
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("Select * From [БытоваяХимия] WHERE Код = " +
        ADOTable1->FieldByName("Код")->AsString);
    ADOQuery1->Open();
    Edit1->Text = ADOQuery1->FieldByName("Наименование")->AsString;
    Edit2->Text = ADOQuery1->FieldByName("Страна производитель")->AsString;
    DateTimePicker1->Date =
        StrToDate(ADOQuery1->FieldByName("Дата поступления")->AsString);
    Edit3->Text = ADOQuery1->FieldByName("Количество")->AsString;
    Edit4->Text = ADOQuery1->FieldByName("Цена")->AsString;
 
}
Пробуйте.
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 18:41  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik, 6-го билдера у меня под рукой нету, поэтому придется объяснять так.

1. В DataSource1 в качестве DataSet выбираете ADOTable1.

2. Код на добавление записи тогда будет таким:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::Button1Click(TObject *Sender) {
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit3->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit4->Text);
    ADOQuery1->ExecSQL();
 
    ADOTable1->Close(); //просто переоткрываем ADOTable1 
    ADOTable1->Open();  //для обновления записей в DBGrid
}

3. У ADOTable1 в событиях находим "AfterScroll" и щелкаем по нему. Внутри этого события пишем:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::ADOTable1AfterScroll(TDataSet *DataSet) {
 
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("Select * From [БытоваяХимия] WHERE Код = " +
        ADOTable1->FieldByName("Код")->AsString);
    ADOQuery1->Open();
    Edit1->Text = ADOQuery1->FieldByName("Наименование")->AsString;
    Edit2->Text = ADOQuery1->FieldByName("Страна производитель")->AsString;
    DateTimePicker1->Date =
        StrToDate(ADOQuery1->FieldByName("Дата поступления")->AsString);
    Edit3->Text = ADOQuery1->FieldByName("Количество")->AsString;
    Edit4->Text = ADOQuery1->FieldByName("Цена")->AsString;
 
}
Пробуйте.
огромное спасибо работает все!! вот есть небольшие казусы:
1.после добавления новой записи(после нажатия на кнопку добавить), автоматически отображается в эдитах 1 запись таблицы.
2. если спуститься вниз таблицы используя клавиатуру вылетает ошибка след содержания!
Миниатюры
Проблема с добавлением записи  
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 19:07
Bylik,


Цитата Сообщение от Bylik Посмотреть сообщение
1.после добавления новой записи(после нажатия на кнопку добавить), автоматически отображается в эдитах 1 запись таблицы.
Вполне логично, т.к. после рефреша ADOTable1, указатель переходит на первую строчку, ну а сама запись тусует в самом конце.


Цитата Сообщение от Bylik Посмотреть сообщение
2. если спуститься вниз таблицы используя клавиатуру вылетает ошибка след содержания!
Хм, интересно Не сталкивался. Давайте попробуем так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::ADOTable1AfterScroll(TDataSet *DataSet) {
    if (!DataSet->Eof) {
        ADOQuery1->Close();
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("Select * From [БытоваяХимия] WHERE Код = " +
            ADOTable1->FieldByName("Код")->AsString);
        ADOQuery1->Open();
        Edit1->Text = ADOQuery1->FieldByName("Наименование")->AsString;
        Edit2->Text = ADOQuery1->FieldByName("Страна производитель")->AsString;
        DateTimePicker1->Date =
            StrToDate(ADOQuery1->FieldByName("Дата поступления")->AsString);
        Edit3->Text = ADOQuery1->FieldByName("Количество")->AsString;
        Edit4->Text = ADOQuery1->FieldByName("Цена")->AsString;
    }
    else {
 
        Edit1->Text = "";
        Edit2->Text = "";
        Edit3->Text = "";
        Edit4->Text = "";
 
    }
 
}
или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void __fastcall TForm1::ADOTable1AfterScroll(TDataSet *DataSet) {
    if (!DataSet->Eof) {
        ADOQuery1->Close();
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("Select * From [БытоваяХимия] WHERE Код = " +
            ADOTable1->FieldByName("Код")->AsString);
        ADOQuery1->Open();
        Edit1->Text = ADOQuery1->FieldByName("Наименование")->AsString;
        Edit2->Text = ADOQuery1->FieldByName("Страна производитель")->AsString;
        DateTimePicker1->Date =
            StrToDate(ADOQuery1->FieldByName("Дата поступления")->AsString);
        Edit3->Text = ADOQuery1->FieldByName("Количество")->AsString;
        Edit4->Text = ADOQuery1->FieldByName("Цена")->AsString;
    }
    else {
        DataSet->First();
    }
 
}
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 19:21  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,
Пробуйте.
извините конечно за навязчивость, но вы мне не поможете?

Добавлено через 53 секунды
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,



Вполне логично, т.к. после рефреша ADOTable1, указатель переходит на первую строчку, ну а сама запись тусует в самом конце.



Хм, интересно Не сталкивался. Давайте попробуем так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::ADOTable1AfterScroll(TDataSet *DataSet) {
    if (!DataSet->Eof) {
        ADOQuery1->Close();
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("Select * From [БытоваяХимия] WHERE Код = " +
            ADOTable1->FieldByName("Код")->AsString);
        ADOQuery1->Open();
        Edit1->Text = ADOQuery1->FieldByName("Наименование")->AsString;
        Edit2->Text = ADOQuery1->FieldByName("Страна производитель")->AsString;
        DateTimePicker1->Date =
            StrToDate(ADOQuery1->FieldByName("Дата поступления")->AsString);
        Edit3->Text = ADOQuery1->FieldByName("Количество")->AsString;
        Edit4->Text = ADOQuery1->FieldByName("Цена")->AsString;
    }
    else {
 
        Edit1->Text = "";
        Edit2->Text = "";
        Edit3->Text = "";
        Edit4->Text = "";
 
    }
 
}
или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void __fastcall TForm1::ADOTable1AfterScroll(TDataSet *DataSet) {
    if (!DataSet->Eof) {
        ADOQuery1->Close();
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("Select * From [БытоваяХимия] WHERE Код = " +
            ADOTable1->FieldByName("Код")->AsString);
        ADOQuery1->Open();
        Edit1->Text = ADOQuery1->FieldByName("Наименование")->AsString;
        Edit2->Text = ADOQuery1->FieldByName("Страна производитель")->AsString;
        DateTimePicker1->Date =
            StrToDate(ADOQuery1->FieldByName("Дата поступления")->AsString);
        Edit3->Text = ADOQuery1->FieldByName("Количество")->AsString;
        Edit4->Text = ADOQuery1->FieldByName("Цена")->AsString;
    }
    else {
        DataSet->First();
    }
 
}
сейчас попробую и отпишу) безграничное спасибо вам)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 19:22
Bylik,
Цитата Сообщение от Bylik Посмотреть сообщение
извините конечно за навязчивость, но вы мне не поможете?
В чем именно?
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 20:58  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,

В чем именно?
Спасибо, ошибка пропала!
но все ровно попрежнему отображается информация в эдитах первой строти таблицы, и при выборе нужной строки информация отображается в эдитах но редактирования не происходит а просто добавляется новая строка((

Добавлено через 7 минут
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,

В чем именно?
и еще проблема, новая запись отображается только лишь после того как добавим еще одну запись((
как я понимаю над как то еще обновлять таблицу после добавления(
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 21:06
Bylik,

Цитата Сообщение от Bylik Посмотреть сообщение
но все ровно попрежнему отображается информация в эдитах первой строти таблицы
Об этом я уже писал почему так. Как надо?


Цитата Сообщение от Bylik Посмотреть сообщение
при выборе нужной строки информация отображается в эдитах но редактирования не происходит а просто добавляется новая строка(
Разумеется. Откуда там взяться-то редактированию, когда у нас обработчик ориентирован именно на добавление записи


Цитата Сообщение от Bylik Посмотреть сообщение
и еще проблема, новая запись отображается только лишь после того как добавим еще одну запись((
как я понимаю над как то еще обновлять таблицу после добавления(
Не может такого быть.

C++
1
2
ADOTable1->Close(); //просто переоткрываем ADOTable1 
ADOTable1->Open();  //для обновления записей в DBGrid
Вот это отвечает за обновление записей в DBGrid'е, при условии что сделано это:
Цитата Сообщение от The_Immortal Посмотреть сообщение
1. В DataSource1 в качестве DataSet выбираете ADOTable1.
Ну и при условии, что в ADOTable1 в свойстве Connection выбрано ADOConnection - ну это уж я надеюсь Вы сделали?
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 21:13  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,


Об этом я уже писал почему так. Как надо?



Разумеется. Откуда там взяться-то редактированию, когда у нас обработчик ориентирован именно на добавление записи



Не может такого быть.

C++
1
2
ADOTable1->Close(); //просто переоткрываем ADOTable1 
ADOTable1->Open();  //для обновления записей в DBGrid
Вот это отвечает за обновление записей в DBGrid'е, при условии что сделано это:
надо что бы после добавления записи эдиты очищались.
C++
1
2
ADOTable1->Close(); //просто переоткрываем ADOTable1 
ADOTable1->Open();  //для обновления записей в DBGrid
все так и прописана но всеровно добавляет только после следущего внесения данных!(
а не поможете с обработчиком на редактирование??
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 21:29
Bylik,


Цитата Сообщение от Bylik Посмотреть сообщение
все так и прописана но всеровно добавляет только после следущего внесения данных!(
Цитата Сообщение от The_Immortal Посмотреть сообщение
Ну и при условии, что в ADOTable1 в свойстве Connection выбрано ADOConnection - ну это уж я надеюсь Вы сделали?




Цитата Сообщение от Bylik Посмотреть сообщение
надо что бы после добавления записи эдиты очищались.
Какой от этого смысл? Предлагаю наводить курсор на последнюю добавленную запись вот таким образом:

C++
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
void __fastcall TForm1::Button1Click(TObject *Sender) {
    ADOQuery1->Active = false;
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit3->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit4->Text);
    ADOQuery1->ExecSQL();
 
    ADOTable1->Close();
    ADOTable1->Open();
 
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("Select @@IDENTITY AS Код From [БытоваяХимия]");
    ADOQuery1->Open();
    ADOTable1->Locate("Код", ADOQuery1->FieldByName("Код")->AsString,
        TLocateOptions() << loCaseInsensitive);
}
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 21:43  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik,
и с редактированием не поможете?











Какой от этого смысл? Предлагаю наводить курсор на последнюю добавленную запись вот таким образом:

C++
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
void __fastcall TForm1::Button1Click(TObject *Sender) {
    ADOQuery1->Active = false;
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("INSERT INTO БытоваяХимия ([Наименование] ,[Страна производитель] ,[Дата поступления] , \
        [Количество],[Цена]) VALUES (:Наименование, :Страна_производитель, :Дата_поступления,    \
        :Количество, :Цена)");
    ADOQuery1->Parameters->ParamByName("Наименование")->Value = Edit1->Text;
    ADOQuery1->Parameters->ParamByName("Страна_производитель")->Value =
        Edit2->Text;
    ADOQuery1->Parameters->ParamByName("Дата_поступления")->Value =
        this->DateTimePicker1->Date.DateString();
    ADOQuery1->Parameters->ParamByName("Количество")->Value = Edit3->Text;
    ADOQuery1->Parameters->ParamByName("Цена")->Value = StrToInt(Edit4->Text);
    ADOQuery1->ExecSQL();
 
    ADOTable1->Close();
    ADOTable1->Open();
 
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("Select @@IDENTITY AS Код From [БытоваяХимия]");
    ADOQuery1->Open();
    ADOTable1->Locate("Код", ADOQuery1->FieldByName("Код")->AsString,
        TLocateOptions() << loCaseInsensitive);
}
все сделал так как выше сказано но не чего не изменилось(((

Добавлено через 2 минуты
и попрежнему запись добовляется после следущего внесения данных(
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 21:46
Bylik, чудеса какие-то... Ну тогда устанавливайте TeamViewer - будем разбираться на месте.
1
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 13
10.06.2012, 21:49  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bylik, чудеса какие-то... Ну тогда устанавливайте TeamViewer - будем разбираться на месте.
Ок. Отправил в ПМ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2012, 21:49
Помогаю со студенческими работами здесь

Проблема с добавлением записи в БД
Выдает ошибку System.IndexOutOfRangeException: &quot;Индекс находился вне границ массива.&quot; в этой строчке i =...

проблема с добавлением записи в список
Туплю второй день. Есть список lstParams. Хочу изменить значение в одной из строк. Пишу: Dim li As ListItem Set li =...

Проблема с добавлением записи в SQL содержащей кириллицу
Доброго времени суток, возникла проблема с добавлением записи в SQL содержащей кириллицу. Нашёл что нужно добавлять 'N', но только не знаю...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru