![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго дня, подскажите в чем может быть ошибка.
Мне нужно сделать базу данных преподавателей школы. Я использовал ADO, access . Поля: ФИО, Телефон, Дисциплина1, Дисциплина2, Дисциплина3. Поле дисциплина индексное допускаются совпадения Суть базы: поиск преподавателей по дисциплинам. А также добавление в базу этих преподавателей. Вот до поиска я не дошел, наткнулся на ошибку при добавлении: Цитата:
я менял все что можно в полях дисциплина , но все равно вылазит эта ошибка. Может подскажет кто как обойти это? |
#2
|
||||
|
||||
![]() Киньте сюда примерчик вашей БД.
|
#3
|
|||
|
|||
![]() Этот вопрос я разобрал счас все работает))))))
Но появилась еще проблема при поиске Выдает вот что: Цитата:
Почему так происходит? может то что поля в базе с пробелами (Дисциплина №1)? или с кавычками что то ошибся? По этому случаю код нужен? |
#4
|
||||
|
||||
![]() Нет код не нужен,
1. использование Like без % или * бессмыслено, т.к. пропадает весь смысл его использования и происходит строгое сравнение, а то тоже самое что написать Дисциплина = 'История' 2. у вас используется поле разделенное пробелом, и парсер запроса непонимает какое поле ему использовать Дисциплина или №1 и куда вообще между ними тогда оператор подевался. Либо откажитесь от использования имен полей с пробелами или берите их в квадратные скобки. Должно быть так: [Дисциплина №1] LIKE 'история' |
#5
|
|||
|
|||
![]() Спасибо, счас попробую))
|
#6
|
|||
|
|||
![]() Работает ))) а как организовать поиск по некоторым полям?
|
#7
|
||||
|
||||
![]() Удобнее всего запрос к БД оформлять с параметрами:
Q.SQL.Text := 'select * from MyTable where [Дисциплина №1] like :Value1 and [Дисциплина №2] like :Value2'; Q.Parameters.ParamValues['Value1'] := '%математика%'; Q.Parameters.ParamValues['Value2'] := 'кибернетика'; Q.Open; |
#8
|
|||
|
|||
![]() вроде начинаю понимать но где это прописывать?
я использую ADOQuery1 в sql запросе прописал : SELECT* FROM Исполнители Далее поле edit1 и кнопка в edit1 вписываю слово например Экокомика и нажимаю кнопку в кнопке прописал: procedure TForm1.Button2Click(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; end; так где прописывать параметры? |
#9
|
||||
|
||||
![]() Нет, так не пойдет. Смотрите как я в примере обращаюсь к параметру.
Все что вам необъодимо это вместо моей константы '%математика%' прописать значение из вашего поля ввода: Цитата:
|
#10
|
|||
|
|||
![]() Так кажется должно получиться , счас попробую , отпишусь потом
|
#11
|
|||
|
|||
![]() Ну вот попробовал опять какая то ошибка:
[Error] Unit1.pas(123): Undeclared identifier: 'ParamValues' не задекларирован параметр ? |
#12
|
||||
|
||||
![]() Цитата:
![]() Цитата:
Последний раз редактировалось Страдалецъ, 15.03.2009 в 01:29. |
#13
|
|||
|
|||
![]() Да это я исправил, но получилось вот что:
Цитата:
вот думаю что тут может быть |
#14
|
||||
|
||||
![]() Цитата:
|
#15
|
|||
|
|||
![]() да да я ее убрал но не меняется ни чего )))))
может надо убрать запись в SQL в компоненте адо квери? там у меня прописанно: SELECT* FROM Исполнители |