Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 13:07   #1
vishenkaN
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 7
По умолчанию SQL запрос

Помогите пожалуйста разобраться. при обращении sql запроса к базе данных access в дэлфи программа выдает ошибку, уже после ее запуска:"Синтаксическая ошибка в запросе.Неполное предложение запроса.
то есть запрос фактически не работает. вот код к программе, может что посоветуете:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    ADOTable1: TADOTable;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
dol: string[30];
begin
dol:=InputBox('Выборка информации из БД',
'Укажите должность и щелкните на OK.', '');
if dol <> '' // пользователь ввел должность
then
begin
with form1.ADOQuery1 do begin
Close; // закрыть файл-результат выполнения предыдущего запроса
SQL.Clear; // удалить текст предыдущего запроса
// записываем новый запрос в свойство SQL
SQL.Add('SELECT dol, fam, imya, staz,tel');
SQL.Add('FROM "klienti"');
SQL.Add('WHERE');
SQL.Add('(dol = "'+ dol + '")');
SQL.Add('ORDER BY fam, imya, staz,tel,dol');
Open; // активизируем выполнение запроса
end;

{ *** другой вариант изменения критерия запроса
begin
ADOQuery1.Close;
ADOQuery1.SQL[3]:='(Fam="'+ fam + '")';
ADOQuery1.Open;
DataSource1.DataSet:=ADOQuery1;
end;
}
if ADOQuery1.RecordCount <> 0 then
DataSource1.DataSet:=ADOQuery1 // отобразить рез-т выполнения запроса
else begin
ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');
DataSource1.DataSet:=ADOTable1;
end;
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet:=ADOTable1; // источник данных - таблица

end;

end.

Последний раз редактировалось ACE Valery; 20.01.2012 в 21:08.
vishenkaN вне форума Ответить с цитированием
Старый 20.01.2012, 13:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте двойные кавычки убрать во фразе FROM
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.01.2012, 15:13   #3
vishenkaN
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 7
По умолчанию

пробовала дело не в этом
vishenkaN вне форума Ответить с цитированием
Старый 20.01.2012, 15:21   #4
vishenkaN
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 7
По умолчанию

да спасибо, только запрос все равно не выполняется может я некорректно пишу, насколько я понимаю нужно писать в апострофах???
vishenkaN вне форума Ответить с цитированием
Старый 20.01.2012, 15:37   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что значит "не выполняется". Ошибка или 0 записей возвращает? Имя таблицы можно (но кажется не обязательно?) так писать: [klienti]. Двойные кавычки здесь не при делах
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.01.2012, 16:08   #6
vishenkaN
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 7
По умолчанию

программа запускается, в форме где нужно задать запрос пишу наименование должности (dol) в апострофах, в ответ "нет данных, удовлетворяющим условию поиска", хотя таблица выгружена в дэлфи
vishenkaN вне форума Ответить с цитированием
Старый 20.01.2012, 16:22   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Запрос выполняется, не находя при этом ни одной записи. Вполне нормальная ситуация. Обращение к базе у вас верно, значит или действительно нет, или ищите не то. При таком поиске должны задать полное наименование должности, иначе не найдет. При поиске по части наименования используйте Like
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.01.2012, 16:35   #8
vishenkaN
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 7
По умолчанию

так в том то и дело, что наименование должности пишу полностью, она у меня перед глазами в таблице, а он все равно зараза не хочет
vishenkaN вне форума Ответить с цитированием
Старый 20.01.2012, 16:40   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Может быть каша в использовании латинских букв и кириллицы. Например в наименование одна из букв латинская "c", а вы вводите свою родненькую. И прощай поезд
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.01.2012, 16:43   #10
vishenkaN
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 7
По умолчанию

пробовала в запросе вводить без апострофов выдает ошибку "каналы передачи данных datasource1.circular не позволены"
vishenkaN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос SERG1980 БД в Delphi 6 19.10.2007 23:03
SQL-запрос Elena БД в Delphi 3 21.05.2007 11:34
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15