![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Фу-ты черт, в одной строке столько ошибок понаделал. Там еще и звездочки нет после селекта.
Цитата:
|
|
#17
|
|||
|
|||
|
да все поставил и * и скобку то я сразу заметил вроде все как надо но...
Ошибку не выдает но и не ищет ни чего((((((( может можно как то по другому можно поиск организовать |
|
#18
|
||||
|
||||
|
Скорее всего ошибка в передаваемых данных.
Вот рабочий примерчик: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
DBGrid1: TDBGrid;
Label1: TLabel;
Label2: TLabel;
dsQuery: TDataSource;
Query: TADOQuery;
AppDB: TADOConnection;
Queryid: TAutoIncField;
QueryПреподаватель: TWideStringField;
QueryДисциплина1: TWideStringField;
QueryДисциплина2: TWideStringField;
QueryДисциплина3: TWideStringField;
Edit3: TEdit;
Label3: TLabel;
procedure FormCreate(Sender: TObject);
procedure EditChange(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Tform1.EditChange(Sender: TObject);
begin
Query.Close;
Query.SQL.Text := 'select * from Исполнители where [Преподаватель] like :Value1 and [Дисциплина №1] like :Value2 and [Дисциплина №2] like :Value3';
Query.Parameters.ParamValues['Value1'] := Edit3.Text + '%';
Query.Parameters.ParamValues['Value2'] := Edit1.Text + '%';
Query.Parameters.ParamValues['Value3'] := Edit2.Text + '%';
Query.Open;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AppDB.Open;
EditChange(Sender);
end;
end.
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 302
ClientWidth = 635
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 201
Top = 33
Width = 67
Height = 13
Caption = #1044#1080#1089#1094#1080#1087#1083#1080#1085#1072'1'
end
object Label2: TLabel
Left = 325
Top = 33
Width = 67
Height = 13
Caption = #1044#1080#1089#1094#1080#1087#1083#1080#1085#1072'2'
end
object Label3: TLabel
Left = 88
Top = 33
Width = 80
Height = 13
Caption = #1055#1088#1077#1087#1086#1076#1072#1074#1072#1090#1077#1083#1100
end
object Edit1: TEdit
Left = 201
Top = 48
Width = 118
Height = 21
TabOrder = 1
OnChange = EditChange
end
object Edit2: TEdit
Left = 325
Top = 48
Width = 121
Height = 21
TabOrder = 2
OnChange = EditChange
end
object DBGrid1: TDBGrid
Left = 8
Top = 75
Width = 619
Height = 120
DataSource = dsQuery
TabOrder = 3
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
end
object Edit3: TEdit
Left = 88
Top = 48
Width = 112
Height = 21
TabOrder = 0
OnChange = EditChange
end
object dsQuery: TDataSource
DataSet = Query
Left = 528
Top = 192
end
object Query: TADOQuery
Active = True
Connection = AppDB
CursorType = ctStatic
Parameters = <>
SQL.Strings = (
'select * from '#1048#1089#1087#1086#1083#1085#1080#1090#1077#1083#1080)
Left = 528
Top = 144
object Queryid: TAutoIncField
DisplayWidth = 12
FieldName = 'id'
ReadOnly = True
end
object QueryПреподаватель: TWideStringField
DisplayWidth = 23
FieldName = #1055#1088#1077#1087#1086#1076#1072#1074#1072#1090#1077#1083#1100
Size = 255
end
object QueryДисциплина1: TWideStringField
DisplayWidth = 23
FieldName = #1044#1080#1089#1094#1080#1087#1083#1080#1085#1072' '#8470'1'
Size = 255
end
object QueryДисциплина2: TWideStringField
DisplayWidth = 24
FieldName = #1044#1080#1089#1094#1080#1087#1083#1080#1085#1072' '#8470'2'
Size = 255
end
object QueryДисциплина3: TWideStringField
DisplayWidth = 29
FieldName = #1044#1080#1089#1094#1080#1087#1083#1080#1085#1072' '#8470'3'
Size = 255
end
end
object AppDB: TADOConnection
Connected = True
ConnectionString =
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\'#1061#1086#1079#1103#1080#1085'\Doc' +
'uments\Demo.mdb;Persist Security Info=False'
LoginPrompt = False
Mode = cmShareDenyNone
Provider = 'Microsoft.Jet.OLEDB.4.0'
Left = 528
Top = 96
end
endПоследний раз редактировалось Admin, 15.03.2009 в 16:02. |
|
#19
|
|||
|
|||
|
Вот так работает, но ищет только одно поле:
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
DataModule2.ADOQuery1.Active:=false;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('SELECT*');
DataModule2.ADOQuery1.SQL.Add('FROM Исполнители');
DataModule2.ADOQuery1.SQL.Add('WHERE [Дисциплина №1] LIKE'''+Edit1.Text+'''');
DataModule2.ADOQuery1.Active:=true;
Form4.ShowModal;Последний раз редактировалось Admin, 15.03.2009 в 16:02. |
|
#20
|
||||
|
||||
|
To joomler, Страдалецъ: для размещения кода пользуемся тегом [code], а не цитатой.
|
|
#21
|
|||
|
|||
|
Цитата:
Ага понятно)))) а Вы помочь мне с поиском не можете? |
|
#22
|
||||
|
||||
|
Цитата:
Вы бы уже выложили свою БД что-ли. |
|
#23
|
|||
|
|||
|
а может вот по этому примеру, что Вы мне написали:
Код:
procedure TForm1.BitBtn2Click(Sender: TObject); begin DataModule2.ADOQuery1.Close; DataModule2.ADOQuery1.SQL.Text := 'Select* from Исполнители where [Дисциплина №1] LIKE:Value1 and [Дисциплина №2] LIKE:Value2 and [Дисциплина №3] LIKE:Value3'; DataModule2.ADOQuery1.Parameters.ParamValues['Value1'] := Edit1.Text; DataModule2.ADOQuery1.Parameters.ParamValues['Value2'] := Edit1.Text; DataModule2.ADOQuery1.Parameters.ParamValues['Value3'] := Edit1.Text; DataModule2.ADOQuery1.Open; Form4.ShowModal; end; |
|
#24
|
||||
|
||||
|
Попробуйте поставить точку останова на строке:
Код:
DataModule2.ADOQuery1.Open; Может тогда я пойму в чем проблема. |
|
#25
|
|||
|
|||
|
Ребят я разобрался ))))) вот как у меня это получилось:
Код:
DataModule2.ADOQuery1.Active:=false;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add('SELECT*');
DataModule2.ADOQuery1.SQL.Add('FROM Исполнители');
DataModule2.ADOQuery1.SQL.Add('WhERE [Дисциплина №1] LIKE:Value1 or [Дисциплина №2]LIKE:Value2 or [Дисциплина №3]LIKE:Value3 or [Дисциплина №4]LIKE:Value4 or [Дисциплина №5]LIKE:Value5 or [Дисциплина №6]LIKE:Value6 or [Дисциплина №7]LIKE:Value7 or [Дисциплина №8]LIKE:Value8');
DataModule2.ADOQuery1.Parameters.ParamValues['Value1'] := Edit1.Text;
DataModule2.ADOQuery1.Parameters.ParamValues['Value2'] := Edit1.Text;
DataModule2.ADOQuery1.Parameters.ParamValues['Value3'] := Edit1.Text;
DataModule2.ADOQuery1.Parameters.ParamValues['Value4'] := Edit1.Text;
DataModule2.ADOQuery1.Parameters.ParamValues['Value5'] := Edit1.Text;
DataModule2.ADOQuery1.Parameters.ParamValues['Value6'] := Edit1.Text;
DataModule2.ADOQuery1.Parameters.ParamValues['Value7'] := Edit1.Text;
DataModule2.ADOQuery1.Parameters.ParamValues['Value8'] := Edit1.Text;
DataModule2.ADOQuery1.Active:=true;
Form4.ShowModal;Спасибо Вам за помощь. Только у меня еще вопрос: полей получилось 8 а нужно 10 , но при 10 выдает ошибку мол больше 255 символов что то типа того как с этим бороться? |
|
#26
|
|||
|
|||
|
Разбейте последнюю строку с Where на несколько строк:
Код:
DataModule2.ADOQuery1.SQL.Add('WhERE [Дисциплина №1] LIKE:Value1');
DataModule2.ADOQuery1.SQL.Add('or [Дисциплина №2]LIKE:Value2');
и т.д. |
|
#27
|
|||
|
|||
|
Хорошо попробую сегодня и отпишусь)
|
|
#28
|
|||
|
|||
|
Да все работает спасибо)))) Всем спасибо большое очень мне помогли
|
|
#29
|
|||
|
|||
|
Админы Закройте пожалуйста тему, проблема уже решена)))
спасибо всем!!! ![]() |