|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
Админы Закройте пожалуйста тему, проблема уже решена)))
спасибо всем!!! |