5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
1

Вывести выбранное значение поля из БД на форму

15.09.2015, 07:58. Показов 2215. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Подскажите пожалуйста как вывести выбранное значение из бд в форме.

Вывести выбранное значение поля из БД на форму


выбираем

Вывести выбранное значение поля из БД на форму


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
108
109
unit Unit3;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, Menus, StdCtrls, DB, ADODB, ExtCtrls, DBCtrls,
  Mask;
 
type
  TForm3 = class(TForm)
    Label3: TLabel;
    ComboBox1: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Label7: TLabel;
    Edit4: TEdit;
    Label8: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Button1: TButton;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    procedure RadioButton1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form3: TForm3;
 
implementation
 
uses Unit5, Unit6, Unit7, Unit13, Unit24;
 
{$R *.dfm}
 
 
procedure TForm3.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked then
Form6.Show;
end;
 
procedure TForm3.Button1Click(Sender: TObject);
begin
 try
    DataModule5.ADOQuery1.Close;
    DataModule5.ADOQuery1.SQL.Clear;
    DataModule5.ADOQuery1.SQL.Add('SELECT * FROM tmc');
    DataModule5.ADOQuery1.Active:=true;
            DataModule5.ADOQuery1.Insert;
            DataModule5.ADOQuery1['FIO_inspectr_ohran_vezd']:=ComboBox1.Text;
            DataModule5.ADOQuery1['reg_num_auto_vezd']:=edit1.Text;
            DataModule5.ADOQuery1['num_polupricepa_vezd']:=edit2.Text;
            DataModule5.ADOQuery1['FIO_vnos_vvoz_vezd']:=edit3.Text;
            DataModule5.ADOQuery1['soprovod_doc_vezd']:=edit4.Text;
            DataModule5.ADOQuery1.Post;
            except
        ShowMessage('Ошибка сохранения');
            end;
        Form7.Show;
 
end;
 
 
procedure TForm3.RadioButton3Click(Sender: TObject);
begin
 if RadioButton3.Checked then
 Form24.Show;
end;
 
 
procedure TForm3.FormCreate(Sender: TObject);
var
i: integer;
begin
 Label11.Caption:='Дата: '+DateToStr(Date);
 Label12.Caption:='Время:'+TimeToStr(Time);
 DataModule5.ADOQuery1.SQL.Text:='SELECT obekt FROM tmc ';
DataModule5.ADOQuery1.Open;
i:= DataModule5.ADOQuery1.Fields[0].AsInteger;
DataModule5.ADOQuery1.Close;
Label1.Caption :=inttostr(i);
end;
 
procedure TForm3.RadioButton2Click(Sender: TObject);
begin
 if RadioButton2.Checked then
 Form13.Show;
end;
 
end.
Благодарю заранее!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2015, 07:58
Ответы с готовыми решениями:

Вывести в ComboBox значение, выбранное в DataGrid
У меня существует ComboBox, для которого имеется источник данных - (!!!) таблица в базе данных....

При выборе пункта списка вывести выбранное значение в input
При выборе пункта списка вывести выбранное значение в input. Без обновления страницы, без...

Добавить значение через форму из поля в список
Народ привет! Суть задачи такова. Имеется две таблицы и две формы для внесения значений в эти...

Как из запроса в форму взять значение поля
Добрый день! помогите пож., имееться таблица, запрос и форма. на форме есть text box - control...

15
5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
15.09.2015, 08:42  [ТС] 2
в этой части нужно переделать..
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm3.FormCreate(Sender: TObject);
var
i: integer;
begin
 Label11.Caption:='Дата: '+DateToStr(Date);
 Label12.Caption:='Время:'+TimeToStr(Time);
 DataModule5.ADOQuery1.SQL.Text:='SELECT obekt FROM tmc ';//ошибку выдает
DataModule5.ADOQuery1.Open;//ошибку выдает
i:= DataModule5.ADOQuery1.Fields[0].AsInteger;//ошибку выдает
DataModule5.ADOQuery1.Close;//ошибку выдает
Label1.Caption :=inttostr(i);//ошибку выдает
end;
0
669 / 559 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
17.09.2015, 08:42 3
попробуй так
Delphi
1
2
3
DataModule5.ADOQuery1.close;
DataModule5.ADOQuery1.SQL.Text:='SELECT obekt FROM tmc ';
DataModule5.ADOQuery1.Open;
1
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,743
Записей в блоге: 3
17.09.2015, 20:32 4
DDAri, ты пишешь свой код в момент создания формы Form3. А уверен ты, что к моменту, когда этот код должен выполняться DataModule5 уже создан? Я вот совсем не уверен. Компилятор тебе об этом и сообщает: нету еще DataModule5, соответсвенно, нет еще и ADOQuery, который должен выполнять запрос.
Перенеси код из события FormCreate в событие FormShow - все заработает.
1
5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
21.09.2015, 08:07  [ТС] 5
ZfoxAK, благодарю за помощь! Я пробовала по вашему коду. Все равно не выходит.


D1973, благодарю за помощь! Я пробовала все событие в FormShow записать. Такая же ошибка выходит.
Вывести выбранное значение поля из БД на форму
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,743
Записей в блоге: 3
21.09.2015, 10:26 6
Вот смотри: ты делаешь запрос
Цитата Сообщение от DDAri Посмотреть сообщение
DataModule5.ADOQuery1.SQL.Text:='SELECT obekt FROM tmc ';
Вот в этой строке:
Цитата Сообщение от DDAri Посмотреть сообщение
i:= DataModule5.ADOQuery1.Fields[0].AsInteger;
ты присваиваешь сначение поля Fileld[0] целочисленной переменной.
А есть гарантия, что вот это поле obekt - целочисленное и в момент запроса там есть какие-то данные?
1
5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
23.09.2015, 10:36  [ТС] 7
D1973, в момент запроса есть данные в поле obekt c 99 го. С 1 по 99 пустое. Там наименование объекта. Не совсем поняла как все это делать..

Благодарю за помощь!(я полный новичок в делфи)
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,743
Записей в блоге: 3
23.09.2015, 15:44 8
DDAri, хорошо бы увидеть структуру БД, или (еще лучше) сам проект вместе с базой (если БД Paradox или Access, то это не проблема - просто прицепить файл БД в архив)
1
4 / 4 / 1
Регистрация: 23.09.2015
Сообщений: 12
24.09.2015, 00:19 9
Перенести надо на onShow (FormShow) + Если я правильно понял то я бы так сделал:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm3.FormShow(Sender: TObject);
var
i: integer;
begin
 Label11.Caption:='Дата: '+DateToStr(Date);
 Label12.Caption:='Время:'+TimeToStr(Time);
 
 DataModule5.ADOQuery1.SQL.ADD('SELECT <Поле> FROM <Таблица>;');
 DataModule5.ADOQuery1.Open;
 DataModule5.ADOQuery1.Locate('<Поле>','<ЗначениеДляПоиска>',[]);
 
 label5.Caption := DataModule5.ADOQuery1.FieldByName('<Поле>').AsString;
 DataModule5.ADOQuery1.Close;
end;
Вместо <Поле>, <Таблица>, <ЗначениеДляПоиска> Подставь свои значения без <> и все должно прекрасно заработать, может понадобится перед
Delphi
1
DataModule5.ADOQuery1.SQL.ADD('SELECT <Поле> FROM <Таблица>;');
вставить
Delphi
1
DataModule5.ADOQuery1.SQL.Clear;
1
5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
25.09.2015, 07:50  [ТС] 10
D1973, WazZzuP,
Вывести выбранное значение поля из БД на форму
после выбора объект
Вывести выбранное значение поля из БД на форму
на Label1 должно вывестись выбранный объект.

WazZzuP по вашему коду поиск по объекту не получается.

Благодарю Вас за помощь!
0
4 / 4 / 1
Регистрация: 23.09.2015
Сообщений: 12
25.09.2015, 14:29 11
Цитата Сообщение от DDAri Посмотреть сообщение
WazZzuP по вашему коду поиск по объекту не получается.
Ошибку выдает или просто ничего не происходит?
И еще, откуда и как заполняете combobox, который на первом изображении, второе окно появляется после нажатия кнопки "выбрать"? Если да, то было бы хорошо взглянуть на ее код
1
5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
28.09.2015, 07:23  [ТС] 12
WazZzuP,
Цитата Сообщение от WazZzuP Посмотреть сообщение
откуда и как заполняете combobox, который на первом изображении
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
unit Unit20;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm20 = class(TForm)
    ComboBox1: TComboBox;
    Button1: TButton;
    ComboBox2: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    ComboBox3: TComboBox;
    Label3: TLabel;
    Label5: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form20: TForm20;
 
implementation
 
uses Unit5, Unit2;
 
{$R *.dfm}
 
procedure TForm20.FormCreate(Sender: TObject);
var
i, num: integer;
begin
 i := 1;
   num := 0;
    while (i > 1) do
     begin
      num := num + i;
      i := i + 1;
     end;
label3.Caption := IntToStr(num);
Label5.Caption:='Äàòà: '+DateToStr(Date);
end;
 
procedure TForm20.Button1Click(Sender: TObject);
begin
try
    DataModule5.ADOQuery1.Close;
    DataModule5.ADOQuery1.SQL.Clear;
    DataModule5.ADOQuery1.SQL.Add('Select * From tmc');
    DataModule5.ADOQuery1.Active:=true;
            DataModule5.ADOQuery1.Insert;
            DataModule5.ADOQuery1['date_vezd']:=DateToStr(Date);
            DataModule5.ADOQuery1['time_vezd']:=TimeToStr(Time);
            DataModule5.ADOQuery1['obekt']:=ComboBox1.Text;
            DataModule5.ADOQuery1['kod_ob']:=ComboBox3.Text;
            DataModule5.ADOQuery1['smena']:=ComboBox2.Text;
            DataModule5.ADOQuery1['kod']:=FormatDateTime('yyyymmdd', date)+ComboBox2.Text+ComboBox3.Text;
            DataModule5.ADOQuery1['num']:=Label3.Caption;
            DataModule5.ADOQuery1.Post;
            except
        ShowMessage('Ошибка сохранения');
        Form20.Close;
            end;
            Form2.Show
end;
 
end.
Цитата Сообщение от WazZzuP Посмотреть сообщение
второе окно появляется после нажатия кнопки "выбрать"?
Да. После выбора появляется.

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
108
109
110
111
112
113
114
115
116
unit Unit3;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, Menus, StdCtrls, DB, ADODB, ExtCtrls, DBCtrls,
  Mask;
 
type
  TForm3 = class(TForm)
    Label3: TLabel;
    ComboBox1: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Label7: TLabel;
    Edit4: TEdit;
    Label8: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Button1: TButton;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    procedure RadioButton1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form3: TForm3;
 
implementation
 
uses Unit5, Unit6, Unit7, Unit13, Unit24, Unit20;
 
{$R *.dfm}
 
 
procedure TForm3.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked then
Form6.Show;
end;
 
procedure TForm3.Button1Click(Sender: TObject);
begin
 try
    DataModule5.ADOQuery1.Close;
    DataModule5.ADOQuery1.SQL.Clear;
    DataModule5.ADOQuery1.SQL.Add('SELECT * FROM tmc');
    DataModule5.ADOQuery1.Open;
    DataModule5.ADOQuery1.Active:=true;
            DataModule5.ADOQuery1.Insert;
            DataModule5.ADOQuery1['FIO_inspectr_ohran_vezd']:=ComboBox1.Text;
            DataModule5.ADOQuery1['reg_num_auto_vezd']:=edit1.Text;
            DataModule5.ADOQuery1['num_polupricepa_vezd']:=edit2.Text;
            DataModule5.ADOQuery1['FIO_vnos_vvoz_vezd']:=edit3.Text;
            DataModule5.ADOQuery1['soprovod_doc_vezd']:=edit4.Text;
            DataModule5.ADOQuery1.Post;
            except
        ShowMessage('Ошибка сохранения');
            end;
        Form7.Show;
 
end;
 
 
procedure TForm3.RadioButton3Click(Sender: TObject);
begin
 if RadioButton3.Checked then
 Form24.Show;
end;
 
 
procedure TForm3.RadioButton2Click(Sender: TObject);
begin
 if RadioButton2.Checked then
 Form13.Show;
end;
 
procedure TForm3.FormShow(Sender: TObject);
begin
 Label11.Caption:='Дата: '+DateToStr(Date);
 Label12.Caption:='Время:'+TimeToStr(Time);
 
 DataModule5.ADOQuery1.SQL.Clear;
 DataModule5.ADOQuery1.SQL.ADD('SELECT * FROM tmc');
 DataModule5.ADOQuery1.Open;
 DataModule5.ADOQuery1.Locate('obekt','11 - Нефтебаза пост 1',[]);
 DataModule5.ADOQuery1.Locate('obekt','12 - Нефтебаза пост 2',[]);
 DataModule5.ADOQuery1.Locate('obekt','21 - УЭИО пост 1 ',[]);
 DataModule5.ADOQuery1.Locate('obekt','31 - МТУ пост 1',[]);
 DataModule5.ADOQuery1.Locate('obekt','41 - База комплектации пост 1',[]);
 DataModule5.ADOQuery1.Locate('obekt','51 - Уральский офис пост 1',[]);
 
 label1.Caption := DataModule5.ADOQuery1.FieldByName('obekt').AsString;
 DataModule5.ADOQuery1.Close;
end;
 
end.
код второй картины.

Благодарю Вас за помощь!
0
4 / 4 / 1
Регистрация: 23.09.2015
Сообщений: 12
28.09.2015, 19:35 13
вот этот участок какую цель преследует?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm20.FormCreate(Sender: TObject);
var
i, num: integer;
begin
 i := 1;
   num := 0;
    while (i > 1) do
     begin
      num := num + i;
      i := i + 1;
     end;
label3.Caption := IntToStr(num);
Label5.Caption:='Г„Г*ГІГ*: '+DateToStr(Date);
end;
Цитата Сообщение от DDAri Посмотреть сообщение
код второй картины.
Для каких целей вот этот код? зачем ADOQuery так "переберает" варианты, если он в конце концов останавливается на записи "51-Уральский офис пост 1" и по всему судя выводит именно это значение в label1;
Добавлено через 1 минуту
Постараюсь понять структуру вашей БД и напишу наиболее вероятный способ решения

Добавлено через 11 минут
И да, для начала, combobox я бы заполнял примерно так:
Delphi
1
2
3
4
5
6
7
combobox.Items.Clear;
datamodule.ADOQuery.First;
while not datamodule.ADOQuery.Eof do
begin
combobox.Items.Add(datamodule.ADOQuery.FieldByName('<НазваниеПоляДляЗаполнения>').AsString);
datamodule.ADOQuery.Next;
end;
P.S:Это лишь мое мнение, но на мой взгляд так корректнее.

Добавлено через 2 минуты
И еще, как уже говорилось: не вешайте подобный код на FormCreate, используйте FormShow
1
5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
29.09.2015, 07:03  [ТС] 14
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm20.FormShow(Sender: TObject);
var
i, num: integer;
begin
 i := 1;
   num := 0;
    while (i > 1) do
     begin
      num := num + i;
      i := i + 1;
     end;
label3.Caption := IntToStr(num);
Label5.Caption:='Äàòà: '+DateToStr(Date);
end;
хотела вывести нумерацию каждой добавленных данных, но не id это. (пока не получается)

Цитата Сообщение от WazZzuP Посмотреть сообщение
"51-Уральский офис пост 1" и по всему судя выводит именно это значение в label1;
да выводит именно это значение. А не те что были выбраны в первом запросе (картинке)

Цитата Сообщение от WazZzuP Посмотреть сообщение
И да, для начала, combobox я бы заполнял примерно так:
Спасибо, буду иметь в виду.

Благодарю Вас за помощь!
0
4 / 4 / 1
Регистрация: 23.09.2015
Сообщений: 12
29.09.2015, 18:10 15
чтобы просто вывести текст в label1, достаточно на событие кнопки "выбрать" добавить следующее:
Delphi
1
<ИмяВторойФормы>.Label1.Caption := combobox.text;
Потом, когда будете сохранять запись в БД, просто учитывайте свойство Caption этого лэйбла и все, думаю самый простой вариант
1
5 / 5 / 5
Регистрация: 13.11.2014
Сообщений: 325
02.10.2015, 08:47  [ТС] 16
WazZzuP, Благодарю. То что нужно.
0
02.10.2015, 08:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2015, 08:47
Помогаю со студенческими работами здесь

Вывести значение поля, в лексикографическом порядке значение которого максимальное
Дана строка, состоящая из подстрок (полей), разделенных символом двоеточие (&quot;:&quot;). Поля состоят из...

Суммировать поля из разных таблиц и вывести в форму и отчет
добрый вечер.выручайте народ, сделал Базу данных в аксес 2007 (Гостиница).Там нужно сделать 2 поля...

Не получается сделать переход по записям через выбранное поле поля со списком
Есть 2 формы 1 основная 2 подчиненная. На основной поле со списком с типом продукции. На...

Вывести значение в форму
Разработать программное обеспечение в котором необходимо найти меньше всего из 5 введенных чисел и...

Вывести значение поля...
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt; &lt;html&gt; &lt;head&gt; &lt;meta...

Вывести значение переменной в форму
Есть скрипт отправки почты с сайта. В 14 строчку постоянно нужно вписывать емайл отправителя. Как...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru