![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Я уже не знаю что делать [D4, D6, Paradox]
Itap © (2003-02-14 16:24:00)Проблема: данные из TEdit добавить в SQL-запрос
Последний вариант моего решения который тоже не прошёл:
procedure TForm1.Edit18Change(Sender: TObject);
begin
DBGrid1.DataSource:=DataSource1;
Table1.Active:=False;
Table1.TableName:="MainBase.db";
DBGrid1.DataSource:=DataSource2;
Query1.Active:=False;
Query1.SQL.Clear;
Query1.SQL.Add("select Num as Номер");
Query1.SQL.Add(", F as Фамилия");
Query1.SQL.Add(" From MainBase");
Query1.SQL.Add(" where F like ");
Query1.SQL.Add("STRPCopy(b, Edit18.Text);"+"");
Query1.SQL.Add(""%"");
Query1.Active:=True;
end;
Вопрос:Как быть?
Краткое описание: Из поля "F" базы данных "MainBase" (Paradox) необходимо показать фамилии начинающиеся с тех букв которые записываются в Edit18. Запрос должен выполняться при внесении в окно Edit18 какого либо символа.
Itap (2003-02-16 15:33:00) [1]>Соловьев ©
А ведь ты был прав, прошёл вариант:
procedure TForm1.Edit18Change(Sender: TObject);
begin
Query1.Close; Query1.SQL.Clear;
Query1.SQL.Add("select Num as Номер");
Query1.SQL.Add(", F as Фамилия");
Query1.SQL.Add(" From MainBase");
Query1.SQL.Add(" where F ");
Query1.SQL.Add("Like """ + Edit18.Text + "%""");
Query1.Open;
end;
НАХАЛ (2003-02-15 01:00:00) [2]
> Chubais ©
Ну...
Соловьев (2003-02-14 17:06:00) [3]И лучше используй параметризированые запросы будет на порядок быстрее.
Itap (2003-02-14 17:00:00) [4]>Соловьев
>Это понятно, но зачем в OnChange?????
Да, наверное правильно - перепишу
Соловьев (2003-02-14 16:57:00) [5]
> Просто в базе используется 2 DataSource поэтому приходиться
> делать такие переприсвоения
Это понятно, но зачем в OnChange?????
Itap (2003-02-14 16:51:00) [6]>Соловьев ©
> DBGrid1.DataSource:=DataSource1;
> DBGrid1.DataSource:=DataSource2;
>Зачем это делать каждый раз при изменении Edit18.Text?
Просто в базе используется 2 DataSource поэтому приходиться делать такие переприсвоения
Chubais (2003-02-14 16:51:00) [7]мда....
stas (2003-02-14 16:44:00) [8]to Itap
Прошу прощения запарился...
Соловьев (2003-02-14 16:43:00) [9]
> procedure TForm1.Edit18Change(Sender: TObject);
> begin
> DBGrid1.DataSource:=DataSource1;
> Table1.Active:=False;
> Table1.TableName:="MainBase.db";
> DBGrid1.DataSource:=DataSource2;
Зачем это делать каждый раз при изменении Edit18.Text?
> Itap © (14.02.03 16:34)
> >Query1.SQL.Add(Edit18.Text+"%");
> Ведь в запросе символы идут под типом PChar а в Edit они
> как TString возникает проблема с типами
У меня все работатет, может, ты чего-то не пишешь?
Itap (2003-02-14 16:41:00) [10]>Stas ©
>Попробуй использовать оператор lIke
На его основе какраз и основан запрос
Itap (2003-02-14 16:40:00) [11]Johnmen - спасибо,попробую
Я думаю получиться. Только сейчас заметил что в моём исходном тексте после строки: Query1.SQL.Add("STRPCopy(b, Edit18.Text) стоит ";" которой там явно не должно быть.
Stas (2003-02-14 16:35:00) [12]Попробуй использовать оператор lIke
Johnmen (2003-02-14 16:34:00) [13]procedure TForm1.Edit18Change(Sender: TObject);
begin
Query1.Close; Query1.SQL.Clear;
Query1.SQL.Add("select Num as Номер");
Query1.SQL.Add(", F as Фамилия");
Query1.SQL.Add(" From MainBase");
Query1.SQL.Add(" where F like ");
Query1.SQL.Add(""""+STRPCopy(b, Edit18.Text)+"%""");
Query1.Open;
end;
Itap (2003-02-14 16:34:00) [14]>Query1.SQL.Add(Edit18.Text+"%");
Ведь в запросе символы идут под типом PChar а в Edit они как TString возникает проблема с типами
> Query1.SQL.Add("select Num as Номер");
>Это не верно.
В Paradox разрешается использование русских заголовков, вернее их переименование про запросах
Соловьев (2003-02-14 16:30:00) [15]
> Query1.SQL.Add("STRPCopy(b, Edit18.Text);"+"");
> Query1.SQL.Add(""%"");
Попробуй в событии Edit18.OnChange
...
Query1.SQL.Add(Edit18.Text+"%");
...
> Query1.SQL.Add("select Num as Номер");
Это не верно.