Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 14

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

06.12.2011, 22:57. Показов 1864. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru