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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 08:00   #11
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Stilet прав , действительно достаточно одного метода Locate.

Вот два варианта для позиционирования по одному и по нескольким полям.
Код:
ReestrQuery.Locate('КодИП',Edit1.Text,[]);
ReestrQuery.Locate('КодИП;КодИП2',VarArrayOf([Edit1.Text,Edit2.Text]),[]);
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 12.05.2010, 10:16   #12
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Вот такой код:

Код:
procedure TEditForm.Button6Click(Sender: TObject);
begin
datamodule2.ReestrQuery.Active:=false;
datamodule2.ReestrQuery.SQL.Clear;
datamodule2.ReestrQuery.SQL.Add('SELECT * ');
datamodule2.ReestrQuery.SQL.Add('FROM reestr ');
datamodule2.ReestrQuery.SQL.Add('WHERE reestr.КодИП=' + ''''+Edit1.Text+'''');

datamodule2.ReestrQuery.Active:=true;
     datamodule2.ReestrQuery.Locate('КодИП',edit1.Text,[]);
опять ругается, что КодИП не содержит значение по умолчанию, может что-то с бд? пробывал разные варианты,как советовали, ни чего не помогает, а с LOCATE должно быть что-то похожее???

Последний раз редактировалось Stilet; 12.05.2010 в 10:40.
ара вне форума Ответить с цитированием
Старый 12.05.2010, 10:31   #13
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Может пробел в названии поля ему не нравиться. Вообще это не правильно. В названии полей: русские буквы, пробелы, знаки препинания, кавычки , скобки - все это ведет к геморою ( который ты уже получил ) и к большому геморою, если надумаешь потом базы конвертить на другую платформу( я такой геморой неоднократно лечил ).

Если возможно сделай поля в БД английскими буквами без пробелов итд ( см.выше).

База у тебя какая ? MS SQL, Ms Access ?
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 12.05.2010, 18:15   #14
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

База аксес! буду пробывать переделать
ара вне форума Ответить с цитированием
Старый 12.05.2010, 22:45   #15
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Переписал названия полей нерусскими буквами, получилось вот так:
begin
datamodule2.ReestrQuery.Active:=fal se;
datamodule2.ReestrQuery.SQL.Clear;
datamodule2.ReestrQuery.SQL.Add('SE LECT * ');
datamodule2.ReestrQuery.SQL.Add('FR OM reestr ');
datamodule2.ReestrQuery.SQL.Add('WH ERE reestr.Kod_IP=' + ''''+Edit1.Text+'''');

datamodule2.ReestrQuery.Active:=tru e;
datamodule2.ReestrQuery.Locate('Kod _IP',edit1.Text,[]);

end;
Теперь выдает НОВУЮ ошибку: 'Несоответствие типов данных в выражении условия отбора', подскажите, пож., как исправить ее!!!!
ара вне форума Ответить с цитированием
Старый 13.05.2010, 08:52   #16
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Kod_IP какого типа в базе строковый?
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 13.05.2010, 09:25   #17
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Kod_IP в базе имеет тип данных "Числовой"
ара вне форума Ответить с цитированием
Старый 13.05.2010, 10:19   #18
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

ну. А ты его приравниваешь к строке Edit1.Text;

'WHERE reestr.Kod_IP=' + ''''+Edit1.Text+''''

Либо kod_IP сделай строковым , либо в запросе Edit1.Text пиши, как число, т.е. вот так.

Код:
datamodule2.ReestrQuery.SQL.Add('WH ERE reestr.Kod_IP=' + Edit1.Text);
и здесь тоже :
Код:
datamodule2.ReestrQuery.Locate('Kod _IP',StrToInt(edit1.Text),[]);
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 13.05.2010, 10:28   #19
ара
Форумчанин
 
Регистрация: 11.04.2007
Сообщений: 106
По умолчанию

Ошибка не выскакивает! Но теперь реакции на событие нет ни какой:


Код:
procedure TEditForm.Button6Click(Sender: TObject);
begin
datamodule2.ReestrQuery.Active:=false;
datamodule2.ReestrQuery.SQL.Clear;
datamodule2.ReestrQuery.SQL.Add('SELECT * ');
datamodule2.ReestrQuery.SQL.Add('FROM reestr ');
datamodule2.ReestrQuery.SQL.Add('WHERE reestr.Kod_IP='+Edit1.Text);

datamodule2.ReestrQuery.Active:=true;
datamodule2.ReestrQuery.Locate('Kod_IP',strtoint(edit1.Text),[]);

end;

Последний раз редактировалось Stilet; 13.05.2010 в 11:43.
ара вне форума Ответить с цитированием
Старый 13.05.2010, 11:34   #20
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

А какой реакции ждешь?
Если запрос открылся, и ничего не выбрано - значит нет у тебя в базе строк отвечающих твоему условию.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запросы Kristina92 Microsoft Office Access 2 25.03.2010 21:27
Запросы Katushka_88_88 Microsoft Office Access 3 25.01.2010 20:04
Запросы к БД xDjarx БД в Delphi 6 14.05.2008 17:04
Запросы к БД H@Z@RD Общие вопросы Delphi 3 28.03.2007 01:39