всем привет. Сделал бд в делфи ..в ней..имеется две таблицы, одна из них дочерняя , а др родительская, для каждой таблицы сделал две кнопки, которые реализуют поиски разными методами(первый метод-Lookup, второй- Locate), у первой таблице два метода работают нормально, а вот у второй таблицы не работает метод-Lookup--выходит ошибка при нажати кнопки---Variant or safe array index out of bounds...как исправить жту ошибку я не знаю...вот коды:
procedure TForm1.Button1Click(Sender: TObject); var GrNumTmp1, GrNumTmp2: Integer; begin
If CheckBox1.Checked then begin DataSource1.DataSet:=Table1; GrNumTmp1 := StrToInt(Edit1.Text); GrNumTmp2 := StrToInt(Edit2.Text); With Table1 do begin CancelRange; SetRange([GrNumTmp1],[GrNumTmp2]); end; end else Table1.CancelRange; end;
procedure TForm1.Button2Click(Sender: TObject); var LookUpResults: Variant; i: integer; begin ListBox1.Clear(); LookUpResults:=Table1.Lookup('Soc_nom', StrToInt(Edit3.Text), 'Famil;Imya; Dolgnost'); If VarIsArray(LookUpResults) then begin for i := 0 to 2 do listbox1.Items.Add(LookUpResults[i]); end else case VarType(LookUpResults) of varEmpty : listbox1.Items.Add('Пустой результат'); varNull : listbox1.Items.Add('Запись не найдена'); end; end; procedure TForm1.Button3Click(Sender: TObject); var LocateResults: Variant; begin LocateResults:=Table1.Locate('Soc_nom;Famil;Imya', varArrayof( [1, 'Щеколдин', 'Андрей']),[loCaseInsensitive, loPartialKey]); Case varType(LocateResults) of varEmpty : Label6.Caption:='Пустой результат'; varNull : Label6.Caption:='Запись не найдена'; else Label5.Caption:=LocateResults; end; end;
procedure TForm1.Button4Click(Sender: TObject); var GrNumTmp3, GrNumTmp4: Integer; begin
If CheckBox2.Checked then begin DataSource2.DataSet:=Table2; GrNumTmp3 := StrToInt(Edit4.Text); GrNumTmp4 := StrToInt(Edit5.Text); With Table2 do begin CancelRange; SetRange([GrNumTmp3],[GrNumTmp4]); end; end else Table2.CancelRange; end;
procedure TForm1.Button5Click(Sender: TObject); var LookUpResults: Variant; i: integer; begin ListBox2.Clear(); LookUpResults:=Table2.Lookup('Kod_lic_ch', StrToInt(Edit6.Text), 'Bank; Soc_nom'); If VarIsArray(LookUpResults) then begin for i := 0 to 2 do listbox2.Items.Add(LookUpResults[i]);--ОШИБКА УКАЗЫВАЕТ СЮДА. end else case VarType(LookUpResults) of varEmpty : listbox2.Items.Add('Пустой результат'); varNull : listbox2.Items.Add('Запись не найдена'); end; end;
procedure TForm1.Button6Click(Sender: TObject);
var LocateResults: Variant; begin LocateResults:=Table2.Locate('Kod_lic_ch;N_lic_ch;Bank', varArrayof( ['1', '1', 'Уралсиб']),[loCaseInsensitive, loPartialKey]); Case varType(LocateResults) of varEmpty : Label6.Caption:='Пустой результат'; varNull : Label6.Caption:='Запись не найдена'; else Label11.Caption:=LocateResults; end; end; end.