3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
1

Заполнение ListView из БД

11.04.2016, 13:47. Показов 5855. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал вот такой код, но при запуске программы ListView не заполняется а программа выдает ошибку.

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
with ibQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM DOCS');
    Open;
    First;
    ListVIew1.Items.BeginUpdate;
    try
      ListView1.Clear;
      while not Eof do
      begin
       with ListView do
       begin
        ViewStyle := vsReport;
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Наименование';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Тип';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Дата создания';
      end;
  Item := ListView1.Items.Add;
  Item.Caption := ibquery1.FieldByName('NAMEDOC').AsString;
  Item.SubItems.Add(ibquery1.FieldByName('TYPEDOC').AsString);
  Item.SubItems.Add(ibquery1.FieldByName('DATADOC').AsString);
end;
    finally
      ListView1.Items.EndUpdate;
    end;
  end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2016, 13:47
Ответы с готовыми решениями:

Заполнение listview
Подскажите, как добавить столбцы и заполнить строки, при нажатии кнопки?

Заполнение ListView
Создаю в xaml-разметке чистый ListView. Мне его надо заполнить программно. Причем количество...

Заполнение ListView
Подскажите, как заполнять ListView. Я пробую заполнить так: ListView->AddItem("Текст",...

Заполнение ListView из БД
Добрый день! Прошу помощи у тех кто владеет Delfi Нужно код на дельфи переписать на c++ builder...

29
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 15:03 2
Цитата Сообщение от klausteam Посмотреть сообщение
а программа выдает ошибку
какую?

Добавлено через 2 минуты
ааааааааа, смотрите

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
with ibQuery1 do
begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM DOCS');
    Open;
        with ListView do
        begin
            ViewStyle := vsReport;
            NewColumn := Columns.Add;
            NewColumn.Caption := 'Наименование';
            NewColumn := Columns.Add;
            NewColumn.Caption := 'Тип';
            NewColumn := Columns.Add;
            NewColumn.Caption := 'Дата создания';
        end;
 
    ListVIew1.Items.BeginUpdate;
    try
    ListView1.Clear;
    while not Eof do
    begin
        Item := ListView1.Items.Add;
        Item.Caption := ibquery1.FieldByName('NAMEDOC').AsString;
        Item.SubItems.Add(ibquery1.FieldByName('TYPEDOC').AsString);
        Item.SubItems.Add(ibquery1.FieldByName('DATADOC').AsString);
        query.next;
    end;
finally
ListView1.Items.EndUpdate;
end;
end;
Добавлено через 1 минуту
делаем OPEN
формируем колонки
а далее закручиваем цикл в котором заполняем ПОСТРОЧНО
заполнили строку и делаем Query.Next для перехода на другую строки и опять заполняем колонки
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 16:23  [ТС] 3
Вот
Миниатюры
Заполнение ListView из БД   Заполнение ListView из БД  
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 16:27  [ТС] 4
Цитата Сообщение от qwertehok Посмотреть сообщение
делаем OPEN
формируем колонки
а далее закручиваем цикл в котором заполняем ПОСТРОЧНО
заполнили строку и делаем Query.Next для перехода на другую строки и опять заполняем колонки
OPEN у меня стоял, а вот NEXT я действительно пропустил, сейчас попробую.......
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 16:30 5
Цитата Сообщение от klausteam Посмотреть сообщение
а вот NEXT я действительно пропустил
ты еще зачем то в цикле стал колонки добавлять
а зачем?
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 16:36  [ТС] 6
И все равно выскакивает это сообщение.

Добавлено через 3 минуты
Цитата Сообщение от qwertehok Посмотреть сообщение
ты еще зачем то в цикле стал колонки добавлять
а зачем?
Писал по примеру, вот и решил сначала написать ВСЁ как в примере чтобы посмотреть как оно работает, а потом уже выбрать то что нужно. Но он вообще никак не заработал(((
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 16:37 7
еще раз покажи с новыми исправлениями
только не забудь теги поставить
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 16:45  [ТС] 8
Цитата Сообщение от qwertehok Посмотреть сообщение
еще раз покажи с новыми исправлениями
только не забудь теги поставить
Теги это пояснения того что я хотел добиться той или иной строчкой кода?)))
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 16:47 9
нет, теги это разметка кода что бы понятней было
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 16:54  [ТС] 10
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
with ibQuery1 do
begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM DOCS');
    Open;
 
       { with ListView do     //Если убрать скобки именно этот блок будет выдавать ошибку
        begin
            ViewStyle := vsReport;
            NewColumn := Columns.Add;
            NewColumn.Caption := 'Наименование';
            NewColumn := Columns.Add;
            NewColumn.Caption := 'Тип';
            NewColumn := Columns.Add;
            NewColumn.Caption := 'Дата создания';
        end;  }
 
    ListVIew1.Items.BeginUpdate;
    try
    ListView1.Clear;
    while not Eof do
    begin
        Item := ListView1.Items.Add;
        Item.Caption := ibquery1.FieldByName('NAMEDOC').AsString;
        Item.SubItems.Add(ibquery1.FieldByName('TYPEDOC').AsString);
        Item.SubItems.Add(ibquery1.FieldByName('DATEDOC').AsString);
        ibquery1.next;
    end;
finally
ListView1.Items.EndUpdate;
end;
end;
Вот в таком исполнении он заполняет в ListView только одно значение из БД по полю NAMEDOC.
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 17:07 11
я делал так
Delphi
1
2
3
4
5
6
7
8
9
10
11
ListView1.Items.Clear;
 
    while not q.Eof do
    begin
      with ListView1.Items.Add do
      begin
        Caption:=q.Fields[0].AsString;
        SubItems.Add(q.Fields[1].AsString);
      end;
      q.Next;
    end;
и все работает
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 17:18  [ТС] 12
Цитата Сообщение от qwertehok Посмотреть сообщение
и все работает
такая же история, вставляет только первое значение указанное в таблице БД.
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 17:22 13
мой код работает 100%
Цитата Сообщение от klausteam Посмотреть сообщение
вставляет только первое значение указанное в таблице БД.
или создается только один элемент ListView, а остальные пишет в пустоту
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 17:28  [ТС] 14
Цитата Сообщение от qwertehok Посмотреть сообщение
мой код работает 100%
Это я сомнению не подвергаю, так как мой то вообще не работал., а тут движка в нужном направлении.
Цитата Сообщение от qwertehok Посмотреть сообщение
или создается только один элемент ListView, а остальные пишет в пустоту
Скорее всего так и происходит. У меня ещё вот какая засада. На ListView ViewStyle стоит vsIcon, если я его меняю на vsReport, то он мне и первого элемента не прописывает.
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 17:36 15
предлагаю разобраться в работе ListView - научиться добавлять и удалять элементы
а потом уже заполнять его данными из БД
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 17:45  [ТС] 16
В том то всё и дело, что через эдиты он нормально заполняется, а как БД так труба
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 17:48 17
вставьте уже мой код в вашу "программу"
и в режиме report все будет работать
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 18:49  [ТС] 18
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
with ibQuery1 do
begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM DOCS');
    Open;
    ListView1.Items.Clear;
    while not ibquery1.Eof do
      begin
         with ListView1.Items.Add do
      begin
        Caption:=ibquery1.Fields[0].AsString;
        SubItems.Add(ibquery1.Fields[1].AsString);
      end;
      ibquery1.Next;
    end;
end;
То ли лыжи не едут то ли я недалекий. Но вот этот код в моей программе на Reporte не работает вовсе.

Добавлено через 48 минут
Delphi
1
2
3
4
5
6
7
8
var
  Item: TListItem;
begin
  Item := ListView1.Items.Add;
  Item.Caption := Edit1.Text;
  Item.SubItems.Add(Edit2.Text);
  Item.SubItems.Add(Edit3.Text);
  end;
Вот так заполняет за милую душу, но как только едиты меняются на SQL? вся гармония пропадает((((
0
5443 / 4363 / 1071
Регистрация: 29.08.2013
Сообщений: 27,371
Записей в блоге: 3
11.04.2016, 20:31 19
Цитата Сообщение от klausteam Посмотреть сообщение
на Reporte не работает вовсе.
для того что бы узнать что происходит воспользуйтесь отладчиком
0
3 / 3 / 1
Регистрация: 08.04.2016
Сообщений: 79
11.04.2016, 21:55  [ТС] 20
Цитата Сообщение от qwertehok Посмотреть сообщение
для того что бы узнать что происходит воспользуйтесь отладчиком
Я не могу понять на какой строке программы брейк поставить)))) Я с отладчиком еще меньше знаком чем с листом с которым бьюсь уже целый день.

Добавлено через 59 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM DOCS');
    Open;
    ListView1.Items.Clear;
    while not IBQuery1.Eof do
    begin
      with ListView1.Items.Add do
      begin
        Caption := IBQuery1.Fields[0].AsString;
        SubItems.Add(IBQuery1.Fields[1].AsString);
      end;
      IBQuery1.Next;
    end;
  end;
Поставил точку на Next И вот что получается,Caption почему то принимает значение названия формы.
IBQuery1.Fields[0].AsString;
SubItems.Add(IBQuery1.Fields[1].AsString); Заполняются значениями из таблицы, но в ListView они почему то не заносятся.

Добавлено через 3 минуты
Так же попробовал поставить ShowMessage(Caption) в 15 строчку и получается что выводится сообщение с названием формы а не со значением IBQuery1.Fields[0].AsString;
0
11.04.2016, 21:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2016, 21:55
Помогаю со студенческими работами здесь

Заполнение ListView из БД
Есть одна активити, в ней 2 текстовых поля и кнопка, отправляющая содержимое этих полей как строку...

Заполнение listview
Доброго дня! Как заполнять такой listview?

Заполнение ListView
Привет всем столкнулся с такой проблемой: есть следующий ListView <ListView Height="313"...

Заполнение ListView с XML
Здравствуйте, мне нужна помощь, не могу понять как заполнить ListView с XML файла скаченного с...


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

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

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