Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работают запросы в MS ACCEESS 
:(
    Опции темы
Riddik
Дата 28.8.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте!

Приложение на Delphi работает с базой MS Access.
Никакие запросы, кроме select, не работают.

Например, мне нужно запись из одной таблицы (table1) вырезать и вставить в другую таблицу (table2).

Делаю так:
Код

var
 xd: double;
...
xd:=ADOQuery1.Fields[1].AsFloat;   // запоминаем данные
ADOQuery1.SQL.CLEAR;
ADOQuery1.SQL.ADD('delete from table1 where POLE1=xd');     //удаляю запись, которую нужно перенести в другую таблицу
ADOQuery1.Active;
ADOQuery1.SQL.CLEAR;
ADOQuery1.SQL.ADD('insert into table2 (POLE2) values (xd)');   //добавляю новую запись
ADOQuery1.SQL.ADD('select * from table2');     //отображаем в гриде измененую таблицу.
ADOQuery1.Active;


Не работает! Что я делаю не так?
PM MAIL   Вверх
Данкинг
Дата 28.8.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Дык, вроде это самое, а не .Active:

Код

ADOQuery1.ExecSql;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Rodman
Дата 28.8.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



памятка:

для открытия используется - OPEN (иногда Active)
для изменения (это изменение, удаление, добавлени) используется - EXECSQL
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Riddik
Дата 28.8.2008, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Огромное спасибо!

Я поменял  Active на EXECSQL,  но тут при выполнении приведённых строк кода возникает сообщение об ошибке, что параметр xd не имеет значения по умолчанию и программа прерывается.
Что делать - я проверял: в xd содержится то, что нужно.

Добавлено через 3 минуты и 41 секунду
Если дословно: Проект .exe вызвал исключение класса EOleException с сообщением 'Параметр xd не имеет значения по умолчанию'. Процесс остановлен. Используйте Шаг или Запуск для продолжения.
PM MAIL   Вверх
Данкинг
Дата 29.8.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Riddik @  29.8.2008,  00:56 Найти цитируемый пост)
сообщение об ошибке, что параметр xd не имеет значения по умолчанию и программа прерывается.

Видимо, в какой-то записи значение данного поля просто отсутствует, проверь. А вообще, так лучше юзать:

Код

xd:=ADOQuery1.Fields.FieldByNumber(1).AsFloat;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
pseud
Дата 29.8.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



а если так:
Код

var
  xd: string;
begin
  ...
  xd := ADOQuery1.Fields[1].AsString;   
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('delete from table1 where POLE1 = ' + xd);
  ADOQuery1.ExecSQL;


  


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Данкинг
Дата 29.8.2008, 11:07 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(pseud @  29.8.2008,  10:40 Найти цитируемый пост)
а если так:

А зачем тип данных менять? Да и кавычки же тогда нужно, если стринговая переменная. 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
pseud
Дата 29.8.2008, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



ай ай ай

Цитата(Данкинг @  29.8.2008,  11:07 Найти цитируемый пост)
А зачем тип данных менять?

а чтоб потом не делать FloatToStr()  smile 

Цитата(Данкинг @  29.8.2008,  11:07 Найти цитируемый пост)
Да и кавычки же тогда нужно, если стринговая переменная. 

но поле то POLE1 не стринговое, поэтому кавычек не нужно   smile

Добавлено через 1 минуту и 52 секунды
единственная проблема может возникнуть, если разделитель_десятичных_знаков на запускающем компе и на сервере БД разные.
но это другая история  smile 


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Данкинг
Дата 29.8.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(pseud @  29.8.2008,  12:24 Найти цитируемый пост)
но поле то POLE1 не стринговое, поэтому кавычек не нужно 

И то верно. smile 

Цитата(pseud @  29.8.2008,  12:24 Найти цитируемый пост)
единственная проблема может возникнуть, если разделитель_десятичных_знаков на запускающем компе и на сервере БД разные.
но это другая история

Да не совсем другая, это тоже в проге надо учесть будет, дабы потом косяки не разгребать. smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Riddik
Дата 29.8.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Большое вам всем спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0802 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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