Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2020, 15:15   #1
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию Не отображает данные в DBGrid

Добрый день, столкнулся с такой проблемой : есть фрейм - на нем ДБГрид, подключение настроил - но данные он не отображает, если же на форму положить новый ДБГрид и указать такие же настройки - то всё норм - данные отображаются, не подскажете куда копать?
MixanMM вне форума Ответить с цитированием
Старый 22.01.2020, 15:32   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

как обычно в строну разных настроек.
Цитата:
и указать такие же настройки
1. подключить DBgrid что на Frame тому же источнику данных(DataSource) что и DBGrid c формы.
Код:
FrameXX.DBgrid.DataSource:=formXX.DBgrid.DataSource;
// что будут показывать оба Grid???
-- в теории одно и тоже, а на самом деле!

P.S. а самое банальное, "забыли" открыть НД(DataSet).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 22.01.2020 в 15:34.
evg_m вне форума Ответить с цитированием
Старый 22.01.2020, 15:47   #3
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
как обычно в строну разных настроек.

1. подключить DBgrid что на Frame тому же источнику данных(DataSource) что и DBGrid c формы.
Код:
FrameXX.DBgrid.DataSource:=formXX.DBgrid.DataSource;
// что будут показывать оба Grid???
-- в теории одно и тоже, а на самом деле!

P.S. а самое банальное, "забыли" открыть НД(DataSet).
FrameXX.DBgrid.DataSource:=formXX.D Bgrid.DataSource; <- не работает эт штука, так же пусто.
DataSet открыт.
Попробовал так же на Фрейм добавил копмлект компонент для подключения к БД : DataSource, ADOQuery, ADOConnection - так же пусто, как будто не обновляет что ли. т.к. если делать через ADOTable - то ДБГрид сразу заполняется, но если запустить приложение - то в таблице всё равно пусто
MixanMM вне форума Ответить с цитированием
Старый 22.01.2020, 16:48   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
так же пусто,
-нет ни одной строчки.
-строчки есть, но они пустые.(пустая сетка)
какой из вариантов?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.01.2020, 21:04   #5
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

MixanMM, здесь, >> хорошее учебное пособие по работе с БД.
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 23.01.2020, 07:03   #6
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
-нет ни одной строчки.
-строчки есть, но они пустые.(пустая сетка)
какой из вариантов?
Нет ни одной строчки. Программно созадются столбцы с наименвоанием и заданной шириной и на это всё.
Цитата:
Сообщение от Desc Посмотреть сообщение
MixanMM, здесь, >> хорошее учебное пособие по работе с БД.
При чем тут работа с БД ?? проблема в том - что на фрейме БДГрид не работает, а на материнской форме всё работает
MixanMM вне форума Ответить с цитированием
Старый 23.01.2020, 07:06   #7
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию файл проекта

Прикрепил проект
Вложения
Тип файла: rar Project.rar (2.71 Мб, 3 просмотров)
MixanMM вне форума Ответить с цитированием
Старый 23.01.2020, 09:28   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Код:
mysql:='SELECT nazv, kol, price, skid, summa FROM [table1] ';
Frame1.ADOQuery1.SQL.Add(mysql);
Frame1.ADOQuery1.Active := True;

Frame1.DBGrid1.Columns[0].Title.Caption := 'Название';
Frame1.DBGrid1.Columns[1].FieldName := 'Кол-во';
Frame1.DBGrid1.Columns[2].FieldName := 'Цена';
Frame1.DBGrid1.Columns[3].FieldName := 'Скидка %';
Frame1.DBGrid1.Columns[4].FieldName := 'Итог';
что мы имеем.
Frame. имена колонок запроса НЕ совпадают с названиями полей таблицы.
результат строки есть(есть сетка на нужное число строк), а самих данных нет.
Form. колонки строятся "автоматически" по запросу и все работает.

Цитата:
сли же на форму положить новый ДБГрид и указать такие же настройки
разный список колонок.

Цитата:
-нет ни одной строчки.
-строчки есть, но они пустые.(пустая сетка)
какой из вариантов?

гораздо лучше писать текст запроса сразу при конструкции формы(или фрейма).
тогда его можно и открыть тут же.
и после этого "продизайнить" Grid (настроить колонки показа).
имена полей(будут подсказки какие поля есть в запросе)
ширина колонок(сразу видно какая будет нужна)
заголовки
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 23.01.2020 в 10:31.
evg_m вне форума Ответить с цитированием
Старый 23.01.2020, 10:00   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

I.
Цитата:
Код:
      mySQL := 'SELECT nazv, vtare, data_otk, srok FROM nomen WHERE kran='+button.Caption+'';
если нужно получать по каждому, то обычно удобнее бывает сразу получить все данные.
по крайней мере серверу(Access) это гораздо проще.
Код:
select kran, nazv, vtare, data_otk, srok from nomen WHERE kran='+button.Caption+'';
а потом "раскидать" как нужно.
1. обновить то что есть в ответе.
Код:
// сбросить все кнопки если надо
...
// и "поправить" если есть данные
fbtn:=ds.Fieldbyname('kran');
while not ds.EOF do begin
  b:=...FindComponent(fbtn.asString) as TButton;
  // и что с этим делать
  ds.Next;
end;
2.проверить все кнопки что у нас есть
Код:
for i:=0 to ....componentCount-1 do begin
  if not (...components[i] is TButton) then continue;
  b:=...Components[i] as TButton;// проверим эту
  if ds.Locate('kran', b.Caption, []) then begin
  // и что с этим далать
  end
  else begin 
  // и если данных нет
  end;
end;
II.
Цитата:
Код:
if srok>15 then
 begin
   dat.Font.Color:=clGreen;
 end;
if srok<15 then
begin
   dat.Font.Color:=clBlue;
end;
if srok<7 then
begin
   dat.Font.Color:=clRed;
end;
а если srok=15 ???

Код:
if srok>15 then dat.Font.Color:=clGreen
else if srok<7 then dat.Font.Color:=clRed
else {if srok<15 then} dat.Font.Color:=clBlue;
III.
Цитата:
Код:
Form2:= TForm2.Create(Application);
если мы создаем, то неплохо было бы и удалить(уничтожить) ее.
Код:
form2.Release;//From2.Free;
там где мы перестали ею пользоваться (т.е. в конце Login).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 23.01.2020 в 10:29.
evg_m вне форума Ответить с цитированием
Старый 23.01.2020, 10:32   #10
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
что мы имеем.
Frame. имена колонок запроса НЕ совпадают с названиями полей таблицы.
результат строки есть(есть сетка на нужное число строк), а самих данных нет.
Form. колонки строятся "автоматически" по запросу и все работает.
Изменил имена колонок - результат прежний


Цитата:
Сообщение от evg_m Посмотреть сообщение
гораздо лучше писать текст запроса сразу при конструкции формы(или фрейма).
тогда его можно и открыть тут же.
и после этого "продизайнить" Grid (настроить колонки показа).
имена полей(будут подсказки какие поля есть в запросе)
ширина колонок(сразу видно какая будет нужна)
заголовки
Тут не совсем вас понял, вы имеете ввиду
MixanMM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBgrid некорректно отображает данные из БД jirtreck БД в Delphi 5 05.07.2016 10:34
Не отображает DBGrid MixanMM БД в Delphi 8 19.06.2015 17:41
DBGrid не отображает все колонки Elementig Компоненты Delphi 4 11.04.2011 16:44
DBGrid не отображает данные после добавления k0ks67 БД в Delphi 4 10.12.2009 21:17
DBGrid отображает не тот Float, что я ввел. Костя Мельников БД в Delphi 16 06.09.2009 00:23