0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 14

Заголовок DBgrid в цикле

06.12.2011, 22:57. Показов 1876. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Проблема: имеется код сохранения в текстовый файл данных из бд access.
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
begin
saveDialog1.Filter :='Тестовый файл (*.txt)|*.txt';
if SaveDialog1.Execute then
 
   fn:=saveDialog1.FileName;
    assignfile(f,fn);
if fn<>'' then
Rewrite(f);
if FileExists(fn)  then
  begin
ADOTable1.First;
for i:=1 to ADOTable1.RecordCount do
     begin
  Buf:=ADOTable1.FieldByName('ФИО').AsString + ' ' +
  ADOTable1.FieldByName('Год_рождения').AsString + ' '+
  ADOTable1.FieldByName('Школа').AsString+ ' '+
  ADOTable1.FieldByName('Класс').AsString;
  Writeln(f,Buf);
  ADOTable1.Next;
     end;
CloseFile(f);
 
  end;
end;
Как мы видим в коде, то это для статической БД, т.е под одни и те же поля. Как мне сделать чтобы поля не зависили от бд..сижу, понимаю, что нужно как-то воспользоваться dbgrid1.Columns[i].Title.caption..пытаюсь сделать это в цикле-ероры.
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2011, 22:57
Ответы с готовыми решениями:

Не работает нажатие на заголовок в DBGrid
Здравствуйте. Такая проблема. Есть стандартный набор ADO: Connection (Jet 4), Table, DataSource и DBGrid. Колонки в DBGrid добавлены. База...

Сортировка в DbGrid по клику на заголовок столбца
Здравствуйте! Подскажите пожалуйста можно по колонкам сортировать в DBgrid, (т.е если нажать DBGrid по названию колонки &quot;Фамилия&quot;...

DBGrid сортировка при нажатии на заголовок
Всем привет! DBGrid стандартный в Lazarus 1.2.6. Нужно осуществлять сортировку при нажатии на заголовок столбца. Первое, не...

8
20 / 20 / 0
Регистрация: 26.11.2011
Сообщений: 64
07.12.2011, 00:10
Привет. Очень просто через SQl запрос. Select * from таблица. Только тут указывать притереться типы полей
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
07.12.2011, 01:41
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
// àáñîëþòíîå ïåðåìåùåíèå
procedure DSMoveTo(ds: TDataSet; index: integer);
begin
  ds.MoveBy(index-ds.RecNo);
end;
// íå ïóñòîé äàòà ñåò
Function NotEmptySet(inSet:TDataSet): boolean;
begin
  if not inSet.Active then Result:=false else
  Result := Not (inSet.Bof and inSet.eof);
end;
 
// àáñîëþòíàÿ ñòðîêà
function strabs(s:variant):string;
begin
  if s=null then result:='' else result:=s;
end;
// äàòàñåò â ôàéë
procedure DStoTextFile(ds:TDataSet; filePath:string);
var f: TextFile; i,p:integer;
begin
  if not NotEmptySet(ds) then exit;
  assignfile(f,filePath);
  Rewrite(f);
  ds.DisableControls;
  p:=ds.RecNo;
  ds.First;
  repeat
    for i:=0 to ds.FieldCount-1 do
      write(f,strabs(ds.Fields.Fields[i].Value)+' ');
    writeln(f);
    ds.Next;
  until ds.Eof;
  CloseFile(f);
  DSMoveTo(ds,p);
  ds.EnableControls;
end;
 
// пример
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then begin
    DStoTextFile(AdoTable1,SaveDialog1.FileName);
  end;
end;
1
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 14
07.12.2011, 09:30  [ТС]
Спасибо..сложновато на первый взгляд правда-буду разбираться.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
07.12.2011, 11:24
Что за субд? И через что подключаетесь?
Если Access то есть вариант работы через OpenSchema
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 14
07.12.2011, 11:25  [ТС]
Цитата Сообщение от rdama Посмотреть сообщение
Что за субд? И через что подключаетесь?
access,ADOconnection
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
07.12.2011, 11:34
ADO OpenSchema Method
Open schema ADO to ComboBox and Listbox
Вот вам 2 статьи в них достаточно информации чтоб реализовать необходимый вам функционал.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ADOConnection.OpenSchema(siColumns,_get_filter(2,_object_name),EmptyParam,_ds);
 
//_object_name имя таблицы
//_ds TADODataSet в котором будет результат запроса
//Далее пробегаетесь по датасету и добавляете в ComboBox имена полей
function _get_filter(_id : integer ; _object : string) : OLEVAriant;
begin
  case _id of
    3: begin
       Result := VarArrayCreate([0, 3], varVariant);
       Result[3] := 'TABLE';
    end;//Таблицы
    2: begin
       Result := VarArrayCreate([0, 2], varVariant);
       Result[2] := _object;
    end;//Поля
    4: begin
       Result := VarArrayCreate([0, 4], varVariant);
       Result[4] := _object;
    end;//Индексы
  end;
end;
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
07.12.2011, 12:55
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// абсолютное перемещение
procedure DSMoveTo(ds: TDataSet; index: integer);
begin
  ds.MoveBy(index-ds.RecNo);
end;
// не пустой дата сет
Function NotEmptySet(inSet:TDataSet): boolean;
begin
  if not inSet.Active then Result:=false else
  Result := Not (inSet.Bof and inSet.eof);
end;
 
// абсолютная строка
function strabs(s:variant):string;
begin
  if s=null then result:='' else result:=s;
end;
Вот объясните, какая необходимость этих Ваших функций, просто дублирующих имеющиеся стандартные ?
Ящик для коробки ?
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
07.12.2011, 17:26
MsGuns

strabs - конвертирует любые данные в строку, даже null

эту можно выбросить, если Field[i].AsString при значении = null не выдает исключений

NotEmptySet

проверяет дата сет на наличие данных, вне зависимости открыт дата сет или закрыт

DSMoveTo

перемещение указателя датасета в указанную позицию
использует стандрный метод TDataSet.MoveBy

однако у стандарного отсувует обратная связь между TDataSet.RecNo и TDataSet.MoveBy

процедура решает эту проблему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2011, 17:26
Помогаю со студенческими работами здесь

Сортировка при клике на заголовок в DBgrid
Всем Привет! Имеется программа работающая с бд Access. В DBgrid сделал фильтрацию при нажатии на заголовок столбца. Для этого в...

Сортировка DBGrid (компоненты InterBase) при клике на заголовок столбца
Привет всем! У меня стоит задача, чтоб по клику на заголовок столбца DBGrid он сортировался. На форуме нашел следующий код: void...

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

Добавление значения поля в заголовок отчета (не в заголовок страницы!)
Сформировала отчет по 2 параметрам. Т.е. в отчет попали записи, где Поле1=&quot;АААА&quot;, а Поле2=&quot;ВВВВ&quot;. Сами поля Поле1 и Поле2 в отчет...

Как програмно в цикле не доходя до конца, пропустить шаг в цикле?
Как програмно в цикле не доходя до конца, пропустить шаг в цикле?


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

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

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
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, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru