Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
#1

Ошибка при поиске по фамилии

06.10.2016, 14:44. Просмотров 987. Ответов 18
Метки нет (Все метки)

В поле Edit на главной форме не ищет, выдает ошибку, что поле Фамилия не найдено, в чем ошибка? Помогите ее устранить)
0
Вложения
Тип файла: rar OK.rar (418.8 Кб, 7 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2016, 14:44
Ответы с готовыми решениями:

Ошибка при поиске в DBGrid
Здравствуйте, вот столкнулся с такой проблемой: в гриде ищу запись и перехожу...

Ошибка "Параметр не имеет значения по умолчанию" при поиске
Всем привет. Нид хелп. Вообщем делаю поиск: ADOQuery1.Active:=False; ...

Ошибка в поиске
почему то выскакивает ошибка var myLookup: Variant; s : String; begin...

Ошибка в неточном поиске и как сделать точный поиск
База сделана в databasedesktop paradox Здравствуйте вот ошибка 'Invalid use of...

Количество найденных при поиске записей занести в Label
Привет всем, работаю с бд access, я воспроизвожу поиск через эдит, так вот мне...

18
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 15:02  [ТС] #2
и не добавляет поля: город, адрес и страну
0
qwertehok
2210 / 2199 / 599
Регистрация: 29.08.2013
Сообщений: 14,683
06.10.2016, 15:06 #3
Цитата Сообщение от Лидия_3 Посмотреть сообщение
в чем ошибка?
вот в чем ошибка
Цитата Сообщение от Лидия_3 Посмотреть сообщение
выдает ошибку, что поле Фамилия не найдено
Цитата Сообщение от Лидия_3 Посмотреть сообщение
Помогите ее устранить)
так покажите код

Цитата Сообщение от Лидия_3 Посмотреть сообщение
и не добавляет поля: город, адрес и страну
кто не добавляет?
0
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 15:21  [ТС] #4
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, Menus, DBCtrls;
 
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Splitter1: TSplitter;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    PopupMenu1: TPopupMenu;
    NFam: TMenuItem;
    NNet: TMenuItem;
    NImya: TMenuItem;
    NObrat: TMenuItem;
    DBNavigator1: TDBNavigator;
    procedure BitBtn1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure NFamClick(Sender: TObject);
    procedure NNetClick(Sender: TObject);
    procedure NImyaClick(Sender: TObject);
    procedure NObratClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses Unit2, Editor;
{$R *.dfm}
 
 
procedure TForm1.BitBtn1Click(Sender: TObject);
//http://www.delphiplus.org/programirovanie-baz-dannih-v-delphi/metod-lookup.html
var
  s : String;
  //ed:  String;
myLookup: Variant; //для получения результата s : String; //для отчета begin
 
//получаем результат:
begin
myLookup := fDM.TLichData.Lookup('Фaмилия', Edit1.Text,'Фaмилия;Имя;Отчество;Обрaзовaние'); //проверяем, не Null ли это:
 if VarType(myLookup) = varNull then
 
ShowMessage('Сотрудник с Taкой фамилией не нaйден!') else if VarType(myLookup) = varEmpty then
 
ShowMessage('3aпись не нaйденa!')
 
//если это массив, то из его элементов собираем //многострочную строку:
 
else
if VarisArray(myLookup) then begin
 
s := myLookup[0] + #13 + myLookup[1] + #13 +myLookup[2] + #13 + myLookup[3]; //и выводим ее на экран:
 ShowMessage(s); end; //else if end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  fEditor.ShowModal;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 
  fEditor.ShowModal;
end;
 
procedure TForm1.NFamClick(Sender: TObject);
 var
stype : String;
 begin
 
//выбираем направление сортировки:
 
if NObrat.Checked then stype := ' DESC' //обратная сортировка
 else stype := ' ASC'; //прямая сортировка //сортируем
 
fDM.TLichData.IndexFieldNames := 'Фамилия' + stype; end;
procedure TForm1.NImyaClick(Sender: TObject);
var
stype : String;
 begin
 
//выбираем направление сортировки:
 
if NObrat.Checked then stype := ' DESC' else stype := ' ASC';
 
//сортируем
 
fDM.TLichData.IndexFieldNames := 'Имя' + stype; end;
 
procedure TForm1.NNetClick(Sender: TObject);
begin
fDM.TLichData.IndexFieldNames := ''; end;
procedure TForm1.NObratClick(Sender: TObject);
begin
//изменяем направление сортировки
 
NObrat.Checked := not NObrat.Checked;
 
//если сортировка по фамилии, пересортируем
 
if Pos('Фамилия',fDM.TLichData.IndexFieldNames)>0 then
 
Form1.NFamClick(Sender); //если сортировка по имени, пересортируем
 if Pos('Имя',fDM.TLichData.IndexFieldNames)>0 then
 
Form1.NImyaClick(Sender);
end;
 
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
//fDM.MyLocate(Edit1.Text);
//fDM.TLichData.Filter := 'Фaмилия >=' + QuotedStr(Edit1.Text); fDM.TLichData.Filtered := True;
//если в поле Editl есть хоть одна буква,
if Edit1.Text <> '' then begin
 
fDM.TLichData.Filtered := False; //отключаем фильтр
 
ed := Edit1.Text; //передаем в DM новый текст
 
fDM.TLichData.Filtered := True; //включаем фильтр
 end
 
//если букв нет, фильтрацию отключаем:
else fDM.TLichData.Filtered := False; end;
 
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  if RadioButton1.Checked then
 
DBGrid2.DataSource := fDM.DSAdres;
end;
 
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
   if RadioButton2.Checked then
 
DBGrid2.DataSource := fDM.DSTelephones;
end;
 
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
  if RadioButton3.Checked then
 
DBGrid2.DataSource := fDM.DSDoljnost;
end;
 end.
0
qwertehok
2210 / 2199 / 599
Регистрация: 29.08.2013
Сообщений: 14,683
06.10.2016, 15:26 #5
и зачем нам ВЕСЬ код?
покажите где ошибка и все
0
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 15:28  [ТС] #6
Вот:
if VarType(myLookup) = varNull then
и еще одна:
s := Copy(DataSet['Фaмилия'], 1, Length(ed));
0
qwertehok
2210 / 2199 / 599
Регистрация: 29.08.2013
Сообщений: 14,683
06.10.2016, 15:37 #7
вы содрали этот код из интернета и спрашиваете почему он не работает?

во первых вы содрали бездумно
во вторых - пишите автору
0
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 15:46  [ТС] #8
я его не содрала, а лишь выполняю заданее, порученное преподавателем
0
qwertehok
2210 / 2199 / 599
Регистрация: 29.08.2013
Сообщений: 14,683
06.10.2016, 15:52 #9
покажите скрин ошибки в окне Delphi
0
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 16:15  [ТС] #10
Вот:
0
Миниатюры
Ошибка при поиске по фамилии   Ошибка при поиске по фамилии  
qwertehok
2210 / 2199 / 599
Регистрация: 29.08.2013
Сообщений: 14,683
06.10.2016, 16:27 #11
ошибку переводили?
0
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 16:31  [ТС] #12
да, переводила, но у меня введено много фамилий
0
qwertehok
2210 / 2199 / 599
Регистрация: 29.08.2013
Сообщений: 14,683
06.10.2016, 16:33 #13
и что же вы перевели?
0
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 16:35  [ТС] #14
но он еще выдает ошибку, что поле Фамилия не найдено
0
kwinto
55 / 83 / 24
Регистрация: 27.02.2010
Сообщений: 397
06.10.2016, 17:23 #15
В procedure TfDM.TLichDataFilterRecord(DataSet: TDataSet; var Accept: Boolean);
введите заново поле Фамилия поверх существующего.
0
Лидия_3
2 / 2 / 1
Регистрация: 09.02.2016
Сообщений: 198
06.10.2016, 17:28  [ТС] #16
А поверх это как?
0
kwinto
55 / 83 / 24
Регистрация: 27.02.2010
Сообщений: 397
06.10.2016, 17:37 #17
Стираете старое значение Фамилия и пишите новое Фамилия
0
virtual[ity]
157 / 137 / 64
Регистрация: 05.06.2010
Сообщений: 610
09.10.2016, 21:03 #18
Если судить по ошибкам на скриншотах, то можно сказать следующее, обращение к закрытому набору данных(DataSet) и решается это либо через Active, либо Open.
0
rusqwe
59 / 59 / 26
Регистрация: 30.05.2016
Сообщений: 284
Завершенные тесты: 4
10.10.2016, 11:21 #19
Лучший ответ Сообщение было отмечено Лидия_3 как решение

Решение

s := Copy(DataSet['Фaмилия'], 1, Length(ed));
попробуй сменить s := Copy(DataSet.FieldByName('Фaмилия').value, 1, Length(ed));

Добавлено через 3 минуты
И не забывать включить AdoTable.Active:=true;
1
10.10.2016, 11:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2016, 11:21

Нужно что бы програма искала по фамилии, после нажатия кнопки *найти* и сортировала по длине фамилии.
Нужно что бы програма искала по фамилии, после нажатия кнопки *найти* и...

Фильтрация по фамилии клиента при нажатии на кнопку
имеется adotable содержащая несколько полей необходимо чтобы при нажатии на...

Сделать, чтобы при выборе фамилии из списка менялось содержимое формы
необходимо сделать чтобы при выборе фамилии из списка (источник таблица в базе...


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

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

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