Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите где ошибка в запросе 
:(
    Опции темы
panzer
Дата 9.1.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



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

Вот код 

Код

procedure TForm4.Button1Click(Sender: TObject);  {Нажимаем кнопку поиск}
var
 form1 : TForm1;
begin
Form1.Query1.Active:=false;
Form1.Query1.Params[0].AsString:=Form4.Edit4.Text;
Form1.Query1.Params[1].AsString:=Form4.Edit5.Text;
Form1.Query1.Params[2].AsString:=Form4.Edit6.Text;
Form1.Query1.Active:=true;
  with form1.Query1 do begin
  Close;       // закрыть файл-результат выполнения предыдущего запроса
  SQL.Clear;   // удалить текст предыдущего запроса
  // записываем новый запрос в свойство SQL
  SQL.Add('SELECT fam, imj, otch');
  SQL.Add('FROM ":fedroz.dbf');
  SQL.Add('WHERE fam=:param[0]');
  SQL.Add('WHERE imj=:param[1]');
  SQL.Add('WHERE otch=:param[2]');
  SQL.Add('ORDER BY Fam, imj,otch');
  Open;         // активизируем выполнение запроса
  end;
  if form1.Query1.RecordCount <> 0 then
              form1.DataSource1.DataSet:=form1.Query1 // отобразить рез-т выполнения  запроса
            else
   begin
              ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');

            end;
      end;
end.



а ошибка access violation at address 004B6A19 in module prodject1.exe. Read of address 40868BFF 


PM MAIL   Вверх
Rodman
Дата 9.1.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Код

procedure TForm4.Button1Click(Sender: TObject);  {Нажимаем кнопку поиск}
var
 form1 : TForm1;
begin
Form1.Query1.Active:=false;
Form1.Query1.Params[0].AsString:=Form4.Edit4.Text;
Form1.Query1.Params[1].AsString:=Form4.Edit5.Text;
Form1.Query1.Params[2].AsString:=Form4.Edit6.Text;
Form1.Query1.Active:=true;
  with form1.Query1 do begin
  Close;       // закрыть файл-результат выполнения предыдущего запроса
  SQL.Clear;   // удалить текст предыдущего запроса
  // записываем новый запрос в свойство SQL
  SQL.Add('SELECT fam, imj, otch');
  SQL.Add('FROM ":fedroz.dbf');//вот тут я не уверен, что можно так передавать
  SQL.Add('WHERE fam='+Form4.Edit4.Text);// они же не существуют, надо так...
  SQL.Add('WHERE imj='Form4.Edit4.Text);
  SQL.Add('WHERE otch='Form4.Edit4.Text);
  SQL.Add('ORDER BY Fam, imj,otch');
  Open;         // активизируем выполнение запроса
  end;
  if form1.Query1.RecordCount <> 0 then
              form1.DataSource1.DataSet:=form1.Query1 // отобразить рез-т выполнения  запроса
            else
   begin
              ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');
            end;
      end;
end.


Добавлено @ 15:12 
смотри коментарии
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Vas
Дата 9.1.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Скорее всего здесь
Код

SQL.Add('FROM ":fedroz.dbf');


Вот еще вариант, зачем открывать и закрывать сразу запрос. И еще параметры в запрос обычно передаются после того как написали текст запроса  smile 
Код

procedure TForm4.Button1Click(Sender: TObject);  {Нажимаем кнопку поиск}
var
 form1 : TForm1;
begin
with form1.Query1 do 
  begin
  Close;       // закрыть файл-результат выполнения предыдущего запроса
  SQL.Clear;   // удалить текст предыдущего запроса
  // записываем новый запрос в свойство SQL
  SQL.Add('SELECT fam, imj, otch');
  SQL.Add('FROM fedroz.dbf');
  SQL.Add('WHERE fam=:fam');
  SQL.Add('WHERE imj=:imj');
  SQL.Add('WHERE otch=:otch');
  SQL.Add('ORDER BY Fam, imj,otch');
  //передаем описанным в запросе параметрам значения
  Params.ParamByName('fam').AsString:=Form4.Edit4.Text;
  Params.ParamByName('imj').AsString:=Form4.Edit5.Text;
  Params.ParamByName('otch').AsString:=Form4.Edit6.Text;
  Open;         // активизируем выполнение запроса
  end;
  if form1.Query1.RecordCount <> 0 then
     form1.DataSource1.DataSet:=form1.Query1 // отобразить рез-т выполнения  запроса
  else
     ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');
end.



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Dremlin
Дата 9.1.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Quo vadis?
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 21.9.2006
Где: Киев

Репутация: 1
Всего: 4



Цитата(Vas @  9.1.2007,  15:24 Найти цитируемый пост)
И еще параметры в запрос обычно передаются после того как написали текст запроса

 smile 

+ есть мнение, что второй и третий WHERE в запросе следует заменить на AND и проставить пробелы (не акцес вайолэйшн, конечно, но все равно неприятно) smile 
--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются...
PM MAIL   Вверх
panzer
Дата 9.1.2007, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



Поробывал все варианты, но к сожалению айцесс виолейшин повторяется

кстати а почему

"Скорее всего здесь"

код Pascal/Delphi 
 
Код

1: SQL.Add('FROM ":fedroz.dbf');" 



PM MAIL   Вверх
Rodman
Дата 9.1.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



А ты каким образом подключаешься или просто работаешь как с фалом??? я имею ввиду fedroz.dbf...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
panzer
Дата 9.1.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



это имя таблицы которая лежит на форме
PM MAIL   Вверх
Rodman
Дата 9.1.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



ты можешь чем нить проверить следующие запросы
Код

SELECT * FROM fedroz.dbf;


Код

SELECT * FROM fedroz;



PM MAIL WWW Skype GTalk YIM MSN   Вверх
Vas
Дата 9.1.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(Dremlin @  9.1.2007,  16:33 Найти цитируемый пост)
+ есть мнение, что второй и третий WHERE в запросе следует заменить на AND и проставить пробелы (не акцес вайолэйшн, конечно, но все равно неприятно)

Да уж недосмотрел, сорри  smile

А по F7 на какой строчке то Access violation?


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
panzer
Дата 10.1.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



по F7 на SQL Clear ошибка!

я уже начинаю грешным делом думать, что может быть потому глюк, что у меня базы в fox'е 2.6 написаны?

хотя поробывал в sql мониторе сделать запрос руками на какую-то отдельно взятую фамилию "ИВАНОВ" например, выбрал гад все что надо выбрал!

TO RODMAN: я уже просто отвлеченно писал form1.Table1 - без свяких других ориентиров!

 smile  smile  smile 

кстати может подскажите как старые мои базы в виндовую кодировку перетащить??? никогда этим не занимался!
PM MAIL   Вверх
Mephisto
Дата 10.1.2007, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(panzer @  9.1.2007,  19:12 Найти цитируемый пост)
это имя таблицы которая лежит на форме 

Названия таблиц нельзя передавать параметрм.
PM   Вверх
panzer
Дата 10.1.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



как это?
у меня есть в папке файл fedroz.dbf на форма лежит table1 с указанием что это таблица принадлежит fedroz.dbf. А если не так то как тогда?
подскажите плиз! smile 
PM MAIL   Вверх
SergeBS
Дата 10.1.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



№1:
Код

procedure TForm4.Button1Click(Sender: TObject);  {Нажимаем кнопку поиск}
var
 form1 : TForm1;
begin
Form1.Query1.Active:=false;
Form1.Query1.Params[0].AsString:=Form4.Edit4.Text;
Form1.Query1.Params[1].AsString:=Form4.Edit5.Text;
Form1.Query1.Params[2].AsString:=Form4.Edit6.Text;
Form1.Query1.Active:=true;

Последняя строка не нужна.

№2:
Код

  SQL.Add('FROM ":fedroz.dbf');

Что здесь делают ":  ? Они должны быть убраны. 

Mephisto, 
Цитата
Названия таблиц нельзя передавать параметрм. 

Можно. Но не так как написано. Тут нет параметра, а есть ошибка в строке запроса, т.к. Query1 (или кто там еще) получит строки
SELECT fam, imj, otch 
FROM ":fedrozdbf
WHERE ...
и естественно на ": сильно обидится smile.
PM MAIL   Вверх
panzer
Дата 11.1.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



испробовал все, все равно access violetion  smile 
PM MAIL   Вверх
DimW
Дата 11.1.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



так попробуй:

Код

  Close;     
  SQL.Clear;
  SQL.Add('SELECT fam, imj, otch');
  SQL.Add('FROM fedroz');
  SQL.Add('WHERE fam= '+ Form4.Edit4.Text);
  SQL.Add('  AND imj= '+ Form4.Edit5.Text);
  SQL.Add('  AND otch= '+ Form4.Edit6.Text);
  SQL.Add('ORDER BY fam, imj,otch');
  Open;


если не отработает то строку "SQL.Add('FROM fedroz');" замени на SQL.Add('FROM fedroz.dbf');
если и это не прокатит то напиши:

Код

  Close;     
  SQL.Clear;
  SQL.Add('SELECT *');
  SQL.Add('FROM fedroz');
  Open;


если и это не заработает то фиг знает что ты и как подключил...
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.