Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
ggod
2 / 2 / 2
Регистрация: 03.03.2010
Сообщений: 139
#1

Записей нет

07.02.2012, 00:58. Просмотров 1182. Ответов 10
Метки нет (Все метки)

Вопросик такой допустим есть простой запрос вывести записи учеников из 3 класса с фамилией Медвед
ну а записи там такой нет и следовательно дбгрид останется у нас пустым

вопрос как сделать так что при выводе нулевой записи в лейбле выводилось сообщение что 'записей нет'?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 00:58
Ответы с готовыми решениями:

Нет записей в базе данных
Добрый час. Может тема неоднократно обсуждалось, но всё же задам вопрос. Как...

Блок состоит из 5 записей. Не получается задать количество записей, не кратное 5 (например 7)
удаётся записать в файл лишь кол-во записей, кратное 5 (5,10,15...) иначе не...

Поиск записей по дате в DBGrid и окрашивание записей
Всем привет! очень нуждаюсь в вашей помощи.пишу программу для диплома,и...

Какие файлы с собой таскать, если на клиенте нет Дельфи и нет MySQL?
Добрый день! Подскажите какие файлы мне надо с собой таскать, если на клиенте...

Как при открытии или печати отчета вывести "Нет данных", если в источнике нет записей?
Как при открытии или печати отчета вывести 'НЕТ ДАННЫХ' если в источнике нет...

10
K.A.V.
Блондинка
69 / 29 / 0
Регистрация: 06.03.2011
Сообщений: 658
Записей в блоге: 3
07.02.2012, 01:41 #2
делаем грубо говоря поиск
Нам надо лейбл едит биттон дбгрид
в биттоне описуем

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm3.Button7Click(Sender: TObject);
var i,j:integer; 
begin
 ADOTable1.Filtered:=false;
ADOTable1.Filter:='FIO='+#39+Edit1.Text+#39;
{ShowMessage(ADOTable1.Filter); }
ADOTable1.Filtered:=True;
 j:=0;
//if RadioButton1.Checked then ADOTable1.First;
for i:=0 to ADOTable1.RecordCount-1 do begin
if pos(AnsiUpperCase(edit1.Text),AnsiUpperCase(ADOTable1.Fields[1].AsString))=1 then j:=1;
end;
if j=0 then showmessage('записи нет');
end;
у меня работает
1
ggod
2 / 2 / 2
Регистрация: 03.03.2010
Сообщений: 139
07.02.2012, 02:12  [ТС] #3
Цитата Сообщение от ДианаKS Посмотреть сообщение
делаем грубо говоря поиск
Нам надо лейбл едит биттон дбгрид
в биттоне описуем

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm3.Button7Click(Sender: TObject);
var i,j:integer; 
begin
 ADOTable1.Filtered:=false;
ADOTable1.Filter:='FIO='+#39+Edit1.Text+#39;
{ShowMessage(ADOTable1.Filter); }
ADOTable1.Filtered:=True;
 j:=0;
//if RadioButton1.Checked then ADOTable1.First;
for i:=0 to ADOTable1.RecordCount-1 do begin
if pos(AnsiUpperCase(edit1.Text),AnsiUpperCase(ADOTable1.Fields[1].AsString))=1 then j:=1;
end;
if j=0 then showmessage('записи нет');
end;
у меня работает
при компиляции вылетает: exception class EOleException with message 'Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом'.
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
procedure TKnigi_avtor.Image2Click(Sender: TObject);
var i,j:integer;
 
begin
   try
          adoQuery1.Active:=false;
          adoQuery1.Parameters.ParamByName('AVTOR').Value:=DBLookUpComboBox1.Text;
          adoQuery1.Active:=true;
 
     except
        on error: EDatabaseError do begin
           MessageDlg('При выполнении запроса произошла ошибка:'+#13+#13+
           error.Message ,mtError,[mbOK],0);
        end;
     end;
begin
 ADOTable1.Filtered:=false;
ADOTable1.Filter:='AVTOR'+#39+DBLookUpComboBox1.Text+#39;
{ShowMessage(ADOTable1.Filter); }
ADOTable1.Filtered:=True;
 j:=0;
//if RadioButton1.Checked then ADOTable1.First;
for i:=0 to ADOTable1.RecordCount-1 do begin
if pos(AnsiUpperCase(DBLookUpComboBox1.Text),AnsiUpperCase(ADOTable1.Fields[1].AsString))=1 then j:=1;
end;
if j=0 then showmessage('записи нет');
end;
end;
указывает на 22 строку
0
perepe4a
35 / 67 / 10
Регистрация: 03.02.2012
Сообщений: 362
07.02.2012, 11:12 #4
Delphi
1
2
3
adoQuery1.Active:=false;
adoQuery1.Parameters.ParamByName('AVTOR').Value:=DBLookUpComboBox1.Text;
adoQuery1.Active:=true;
Зачем тебе фильтр если ты и так передаешь имя Медвед?

Ты написал полную фигню.

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
procedure TKnigi_avtor.Image2Click(Sender: TObject);
var i,j:integer;
 
begin
   try
          adoQuery1.Active:=false;
          adoQuery1.Parameters.ParamByName('AVTOR').Value:=DBLookUpComboBox1.Text;
          adoQuery1.Active:=true;
 
     except
        on error: EDatabaseError do begin
           MessageDlg('При выполнении запроса произошла ошибка:'+#13+#13+
           error.Message ,mtError,[mbOK],0);
        end;
 //    end;
//begin -- HAX???
{HAX HADO ???}
{
 ADOTable1.Filtered:=false;
ADOTable1.Filter:='AVTOR'+#39+DBLookUpComboBox1.Text+#39;
ShowMessage(ADOTable1.Filter); 
ADOTable1.Filtered:=True;
 j:=0;
//if RadioButton1.Checked then ADOTable1.First;
for i:=0 to ADOTable1.RecordCount-1 do begin
if pos(AnsiUpperCase(DBLookUpComboBox1.Text),AnsiUpperCase(ADOTable1.Fields[1].AsString))=1 then j:=1;
end;
if j=0 then showmessage('записи нет');
end;}
if adoQuery1.isEmpty then 
 showmessage('записи нет');
end;
------------------------------------------------
Не используйте ADOTABLE!!! Подключайте грид к adoQuery1 или Command.
0
MsGuns
535 / 535 / 57
Регистрация: 04.04.2011
Сообщений: 2,000
07.02.2012, 11:33 #5
Delphi
1
у меня работает
И что ?
Во-первых, зачем и фильтрация и поиск одновременное, причем по РАЗНЫМ, противоречивающим друг другу условиям.
Во-вторых, работает на 10 записях. Сделайте в таблице 5000 записей и попробуйте ! Одно моргание чего стоит
1
K.A.V.
Блондинка
69 / 29 / 0
Регистрация: 06.03.2011
Сообщений: 658
Записей в блоге: 3
07.02.2012, 17:04 #6
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm3.Button7Click(Sender: TObject);
var i,j:integer; 
begin
 
if radiobutton1.Checked then ADOQuery1.First else ADOQuery1.Next;
for i:=0 to ADOQuery1.RecordCount-1 do
begin
if pos(AnsiUpperCase(edit1.Text),AnsiUpperCase(ADOQuery1.Fields[0].AsString))>0  then
begin
DBGrid2.SelectedIndex:=i;
exit;
end;
if i=ADOQuery1.RecordCount-1 then
if pos(AnsiUpperCase(edit1.Text),AnsiUpperCase(ADOQuery1.Fields[0].AsString))=0   then
ShowMessage('Записей не найдено');
ADOQuery1.Next;
end;
1
MsGuns
535 / 535 / 57
Регистрация: 04.04.2011
Сообщений: 2,000
07.02.2012, 17:59 #7
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
type
  TSearchOption = (soFirst,soLast,soNext,soPrior);
 
  //*** Поиск записи по значению в текущей ячейке грида методом сканирования НД
  function DBServ_SearchRecordByField(Grid: TDBGrid; Option: TSearchOption; RaiseErr:
   boolean): boolean; overload;
  function DBServ_SearchRecordByField(Grid: TDBGrid; StatusBar: TStatusBar;
    Panel: integer; Option: TSearchOption): boolean; overload;
 
implementation
 
function DBServ_SearchRecordByField(Grid: TDBGrid; StatusBar: TStatusBar;
   Panel: integer; Option: TSearchOption): boolean; overload;
// Универсальная процедура поиска записи в НД
// StatusBar: где отображать текст выполняемой опервции, если nil, то не отображается
// Panel: индекс панели StatusBar
begin
  Screen.Cursor := crHourGlass;
  if StatusBar<>nil then
    begin
     case Option of
       soFirst: StatusBar.Panels[Panel].Text := 'Поиск первой..';
       soNext: StatusBar.Panels[Panel].Text := 'Поиск следующей..';
       soPrior: StatusBar.Panels[Panel].Text := 'Поиск предыдущей..';
       soLast: StatusBar.Panels[Panel].Text := 'Поиск последней..';
     end;
     StatusBar.Update;
    end;
  result := DBServ_SearchRecordByField(Grid,Option,(StatusBar=nil));
  if StatusBar<>nil then
    begin
     if result then StatusBar.Panels[Panel].Text := ''
     else StatusBar.Panels[Panel].Text := 'Запись не найдена';
     StatusBar.Update;
    end;
  Screen.Cursor := crDefault;
end;
 
function DBServ_SearchRecordByField(Grid: TDBGrid; Option: TSearchOption; RaiseErr: boolean): boolean;
// Функция ищет запись в открытом НД, отображаемом в гриде по значению текущего поля
//  (колонки грида) в напрвлении, указанном Option
var
  bm: TBookMark;
  val: variant;
  DS: TDataSet;
begin
  result := false;
  if not Grid.Focused then exit;
  DS := Grid.DataSource.DataSet;
  if (DS=nil) or not DS.Active or (DS.RecordCount<2) then exit;
  Screen.Cursor := crHourGlass;
  DS.DisableControls;
  DS.Tag := 1;
  bm := DS.GetBookmark;
  val := Grid.SelectedField.Value;
  if Option in [soNext,soLast] then
    begin
     DS.Next;
     while not DS.Eof do
       begin
        if Grid.SelectedField.Value=val then
          begin
           result := true;
           bm := DS.GetBookmark;     // Запомнить последнюю найденную
           if Option=soNext then break;
          end;
        DS.Next;
       end;
    end
  else
    begin
     DS.Prior;
     while not DS.Bof do
       begin
        if Grid.SelectedField.Value=val then
          begin
           result := true;
           bm := DS.GetBookmark;     // Запомнить первую найденную
           if Option=soPrior then break;
          end;
          DS.Prior;
       end;
    end;
  DS.Tag := 0; DS.EnableControls; DS.GotoBookmark(bm); DS.FreeBookmark(bm);
  Screen.Cursor := crDefault;
  if not result and RaiseErr then ShowMessage('Образец не найден');
end;
1
ggod
2 / 2 / 2
Регистрация: 03.03.2010
Сообщений: 139
07.02.2012, 21:46  [ТС] #8
Цитата Сообщение от perepe4a Посмотреть сообщение
Delphi
1
2
3
adoQuery1.Active:=false;
adoQuery1.Parameters.ParamByName('AVTOR').Value:=DBLookUpComboBox1.Text;
adoQuery1.Active:=true;
Зачем тебе фильтр если ты и так передаешь имя Медвед?

Ты написал полную фигню.

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
procedure TKnigi_avtor.Image2Click(Sender: TObject);
var i,j:integer;
 
begin
   try
          adoQuery1.Active:=false;
          adoQuery1.Parameters.ParamByName('AVTOR').Value:=DBLookUpComboBox1.Text;
          adoQuery1.Active:=true;
 
     except
        on error: EDatabaseError do begin
           MessageDlg('При выполнении запроса произошла ошибка:'+#13+#13+
           error.Message ,mtError,[mbOK],0);
        end;
 //    end;
//begin -- HAX???
{HAX HADO ???}
{
 ADOTable1.Filtered:=false;
ADOTable1.Filter:='AVTOR'+#39+DBLookUpComboBox1.Text+#39;
ShowMessage(ADOTable1.Filter); 
ADOTable1.Filtered:=True;
 j:=0;
//if RadioButton1.Checked then ADOTable1.First;
for i:=0 to ADOTable1.RecordCount-1 do begin
if pos(AnsiUpperCase(DBLookUpComboBox1.Text),AnsiUpperCase(ADOTable1.Fields[1].AsString))=1 then j:=1;
end;
if j=0 then showmessage('записи нет');
end;}
if adoQuery1.isEmpty then 
 showmessage('записи нет');
end;
------------------------------------------------
Не используйте ADOTABLE!!! Подключайте грид к adoQuery1 или Command.
спасибо помог я просто про isEmpty не знал)
0
MsGuns
535 / 535 / 57
Регистрация: 04.04.2011
Сообщений: 2,000
08.02.2012, 11:37 #9
Delphi
1
про isEmpty не знал
Если бы Вы еще в топике написали бы просто "Как узнать есть ли записи в открытом ADOQuery ?", Вам бы ответили сразу же и скорее всего так же.
Но Вы упомянули "нулевую запись", сунули туда какого-то медведя и едит. В результате получилась каша из топора и опилок. Отсюда и бестолковость ветки (в частности мой пост в [7] оказался явно не к месту - что называется не в коня корм).

ЗЫ. Конечно, нельзя критиковать модераторов, но иногда удивляешься а читают ли они топики вообще ?
0
perepe4a
35 / 67 / 10
Регистрация: 03.02.2012
Сообщений: 362
08.02.2012, 12:21 #10
ЗЫ. Конечно, нельзя критиковать модераторов, но иногда удивляешься а читают ли они топики вообще ?
Они их пишут
1
ggod
2 / 2 / 2
Регистрация: 03.03.2010
Сообщений: 139
08.02.2012, 19:26  [ТС] #11
Цитата Сообщение от MsGuns Посмотреть сообщение
Delphi
1
про isEmpty не знал
Если бы Вы еще в топике написали бы просто "Как узнать есть ли записи в открытом ADOQuery ?", Вам бы ответили сразу же и скорее всего так же.
Но Вы упомянули "нулевую запись", сунули туда какого-то медведя и едит. В результате получилась каша из топора и опилок. Отсюда и бестолковость ветки (в частности мой пост в [7] оказался явно не к месту - что называется не в коня корм).

ЗЫ. Конечно, нельзя критиковать модераторов, но иногда удивляешься а читают ли они топики вообще ?
главная задача была реализовать вывод сообщения если в таблице нет записей
0
08.02.2012, 19:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2012, 19:26

Нет записей в таблице!!!
Я постепенно извлекаю данные из таблицы по 800 записей и экспортирую их в...

На страницах записей нет h1
На страницах записей нет h1, есть только h2, как добавить тег на сайт? И есть...

вывод всех записей если нет условия
Доброго времени суток! Ситуация такова, допустим, есть таблица с квартирами....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru