1 (edited by adiziktdy 2020-03-13 07:19:58)

Topic: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

Можно ли вывести структуру таблицы в ComboBox командой Form1.ComboBox1.dbSQLExecute(), не создавая вспомогательную таблицу с этой структурой? https://b.radikal.ru/b14/2003/42/111219d92bfe.jpg

Заранее спасибо за ответ.

Yana

Re: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

procedure Form1_ComboBox1_OnDropDown (Sender: TObject);
begin
  Form1.ComboBox1.dbSQLExecute('SELECT поле FROM таблица');
end;
Post's attachments

Attachment icon test.7z 2.74 kb, 235 downloads since 2020-03-12 

Re: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

sibprogsistem wrote:
procedure Form1_ComboBox1_OnDropDown (Sender: TObject);
begin
  Form1.ComboBox1.dbSQLExecute('SELECT поле FROM таблица');
end;

Спасибо, но это немного не то. Мне нужна структура таблицы, т.е названия её полей.

Yana

4 (edited by sibprogsistem 2020-03-12 09:25:30)

Re: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

adiziktdy wrote:

Спасибо, но это немного не то. Мне нужна структура таблицы, т.е названия её полей.

просто имена полей, без вывода записей?
ну если имена полей постоянны то можно так

Form1.ComboBox1.Items.Add('Имя поля_1');
  Form1.ComboBox1.Items.Add('Имя поля_2');

если с записями , то так
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=6355&download=0

Post's attachments

Attachment icon Безымянный.png 13.88 kb, 134 downloads since 2020-03-12 

Re: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

Чтобы заполнить содержимым, достаточно одной команды

  Form1.ComboBox1.dbSQLExecute('SELECT name,id  FROM mainTable');

ну или через || добавить необходимые для отображения поля (в sqlite) или CONCAT() в MySQL

Т.е. автоматически достать имена всех полей в таблице нельзя? Только явное указание? sad

Yana

Re: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

Получить все поля таблицы в SQLite можно таким SQL запросом

PRAGMA table_info('table_name') 
Dmitry.

Re: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

Спасибо большое!

Получила структуру в виде:

cid   name        type               notnull       dflt_value          pk

0    id            INTEGER              0        NULL                   1
1    name      TEXT                    1        NULL                   0
2    summa    REAL (10, 2)        1        NULL                   0
3    check      BOOLEAN             1        NULL                   0
4    dVvod     DATE                    1        NULL                   0

Теперь осталось вытащить названия полей name из массива.

Буду думать smile

Yana

Re: [РЕШЕНО] Можно ли вывести структуру таблицы в ComboBox?

Решение:

procedure Form1_OnShow (Sender: TObject; Action: string);
var
sqlstr: TDataSet;
sName: string;
begin
SQLQuery('Pragma table_info("mainTable")',sqlstr);
while not sqlstr.Eof do
  begin
  sName := sqlstr.FieldByName('name').asString;
  Form1.ComboBox1.Items.Add(sName);
  sqlstr.Next;
  end;
end;
Yana