Нужно отредактировать имеющиеся строки access

Нужно отредактировать имеющиеся строки в access
пробовала так:

if Form2.FDQuery1.Locate('Login',A,[loCaseInsensitive]) then
 begin
 if (F.Length<>0) and (D.Length<>0)  then
 begin
  FDQuery1.FieldByName('Othen').AsString:=F;
  FDQuery1.FieldByName('Password').AsString:=D;
  FDQuery1.Post;
 end
 else
 begin
 if F.Length<>0 then
 begin
 FDQuery1.FieldByName('Password').AsString:=D;
 FDQuery1.Post;
 end
 else
 begin
 FDQuery1.FieldByName('Othen').AsString:=F;
 FDQuery1.Post;
 end;
 end;
 end;

невышло

А что не вышло? Сделай нормально отступы. Посмотри. Почему-то если F не пустое, а D пустое, то заполняется пароль из D, заметь - пустого. Если же наоборот, то заполняется Othen из F, то же кстати пустого

1 лайк

поменяла:

if Form2.FDQuery1.Locate('Login',A,[loCaseInsensitive]) then
 begin
 if (F.Length<>0) and (D.Length<>0)  then
 begin
 FDQuery1.UpdateCursorPos;
  FDQuery1.UpdateRecord;
  FDQuery1.FieldByName('Othen').AsString:=F;
  FDQuery1.FieldByName('Password').AsString:=D;
  FDQuery1.Post;
 end
 else
 begin
 if F.Length<>0 then
 begin
 FDQuery1.UpdateCursorPos;
  FDQuery1.UpdateRecord;
 FDQuery1.FieldByName('Password').AsString:=F;

 FDQuery1.Post;
 end
 else
 begin
 FDQuery1.UpdateCursorPos;
  FDQuery1.UpdateRecord;
 FDQuery1.FieldByName('Othen').AsString:=D;
 FDQuery1.Post;
 end;
 end;
 end;
 end;

А если F и D оба пустые? А если длины строк не нулевые, но в строках просто пробелы? А если в строке ’ abc’, то так и запишешь?

1 лайк

благодарю сегодня весь день сижу над этим уже паниковать начала вот выход оказался:
FDQuery1.Edit

function TForm2.Insertdata(A,F, D: string): string;
begin
//Insertdata(s3,s4, s5);
 if Form2.FDQuery1.Locate('Login',A,[loCaseInsensitive]) then
 begin
 if (F.Length<>0) and (D.Length<>0)  then
 begin
 FDQuery1.Edit;
  FDQuery1.FieldByName('Othen').AsString:=F;
  FDQuery1.FieldByName('Password').AsString:=D;
  FDQuery1.Post;
 end
 else
 begin
 if F.Length<>0 then
 begin
 FDQuery1.Edit;
 FDQuery1.FieldByName('Password').AsString:=F;

 FDQuery1.Post;
 end
 else
 begin
 FDQuery1.Edit;
 FDQuery1.FieldByName('Othen').AsString:=D;
 FDQuery1.Post;
 end;
 end;
 end;
 end;

Вы пропустили замечание от [Аватар] Я хочу что вы позаботились про

строках просто пробелы?

Почитайте про Trim на пример

 Var  A, B string;
  begin
    A := Trim(Edit1.Text);
    B := Trim(Edit2.Text);
    if (A.Length<>0) and (B.Length<>0)  then
     begin
      ................................
      ...............................
     end;
  end;

Если я будим присваивать без Trim

A := Edit1.Text;

и случайно пользователь нажал пробел ! то условия IF будет НЕ правильно работать.

1 лайк

благадарю

1 лайк