Раньше был dbedit в delphi (а в Multiplatform нет)

@виталий_Соловьёв, выше @Аватар дал ответ насчёт Delete - переименуйте свою кнопку (и вообще старайтесь не использовать в качестве идентификаторов имена стандартных функций и процедур, это плохая практика).

1 лайк

IsertSTr deleteStr переименовал Стало норм компелироватся.

теперь при попытке сравнить содержимое базы с данными в S1 вот что получается:
1

Так и где этот код?
Ошибка говорит, что БД не открыта к этому моменту.

И чем S1 провинилась, что у нее такое имя? :frowning:

1 лайк

Упс… ошибся уже уcпел переименовать переименовать переменную в text

А как же это может быть что делать? у меня все подключено и даже во вьювере отображается.

Так а где этот код вызывается?

1 лайк

В свойствах компонентов прописал и проект прикрепил к теме.

ёлы-палы, так же нельзя программировать. открой для себя что такое дебаггер в делфи, точки останова, пошаговая трассировка. а методом тыка не имея понятия что делаешь ни чего не сделаешь. даже если здесь в конце концов и найдут ошибку, потом другая будет и по кругу

1 лайк
  object loginbind: TEdit
    Touch.InteractiveGestures = [LongTap, DoubleTap]
    TabOrder = 41
    Position.X = 200.000000000000000000
    Position.Y = 200.000000000000000000
    OnChange = loginbindChange
procedure TForm2.loginbindChange(Sender: TObject);
begin
if (FDQuery1.DataSource.DataSet.Locate('Login',text,[loCaseInsensitive])) then

изменение эдита не выглядит подходящим событием для такого запроса если там всё равно не используется текст из этого эдита…

1 лайк

Куда я только не пытался поиск приделать и сюда тоже:

procedure TForm2.Timer2Timer(Sender: TObject);

begin

 label3.Text:=text;
label4.Text:=comand;
if  (comand.Length<>0) and (text.Length<>0) then
begin
d:=strtoint(comand);
case d of
1000:begin
if (FDQuery1.DataSource.DataSet.Locate('Login',text,[loCaseInsensitive])) then
begin
FDQuery1.Insert;
D:=1002;
LoginNofind:=true;
loginbind.Text:=text;
end
else
begin
loginbind.Text:='';
passwordbind.Text:='';
groupebind.Text:='';
end;

text:='';
comand:='';
end;

1001:begin
label3.Text:=text;
label4.Text:=comand;
passwordbind.Text:=text;
groupebind.Text:='User';
text:='';
comand:='';
end;
1002:
begin
if LoginNofind=true then
 FDQuery1.Post;

end;

end;
end;
end;

Везде выбивает ошибку

не знаю как он работает, но ошибка скорее всего говорит о том, что у FDQuery1 Active не true.

1 лайк

После перестановки обратно вернулась бывшая ошибка
2

Перестановки чего?

1 лайк

поиска
if (FDQuery1.DataSource.DataSet.Locate('Login',text,[loCaseInsensitive])) then

Это же датасет. При чем здесь DataSource.DataSet.Locate?
Просто:

if FDQuery1.Locate('Login',text,[loCaseInsensitive]) then
1 лайк

удалось решить проблему но почему-то теперь в базу данных сохраняются пустые строки
т.е. та проблема указанная в начале темы осталась
Из перемененной, вставляю данные в edit. Однако в таблице они не отображающийся, поэтому с помощью:

FDQuery1.Post;

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

Покажи код, в котором заполняешь данные вставленной записи в таблицу. Похожий на что-то типа такого:

FDQuery1.FieldByName('Login').AsString:=Text;

1 лайк

У меня эдикты связаны с колонкой логин пароль и пр.

Неужели? А что это за TEdit такой, который можно связать с полем датасета?

Это с помощью TLinkControlToField? Не пользовался, увы

1 лайк