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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2015, 12:21   #11
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Есть stringgrid. В нём числа например 50,100,150,200. Есть adoquery1 где куча записей. В field1 есть записи от 0 до 1250. Нужно в adoquery2 из adoquery1 скопировать все записи которые соответствуют записям stringgrid.
Ernest027 вне форума Ответить с цитированием
Старый 10.09.2015, 12:26   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну? Серега же дал ответ на этот вопрос.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2015, 12:35   #13
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

неправильный синтаксис около ","
Ernest027 вне форума Ответить с цитированием
Старый 10.09.2015, 12:41   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var v:Double;
...
sIn := '';
with StringGrid1 do 
for i:=0 to RowCount-1 do begin
     if TryStrToFloat(Cells[1,i],v) then begin
       if sIn<>'' then sIn:=sIn+',';
       sIn := sIn + Cells[1,i];
    end;
end;


.... := 'insert into VibrationCircle (f,a,v,d) select f,a1,v1,d1 from Vibration2 where f in ( '+sIn+' )';
Так лучше?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2015, 13:28   #15
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

неправильно определен объект parameter
Ernest027 вне форума Ответить с цитированием
Старый 10.09.2015, 13:40   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не понос так золотуха
Показывай свой код
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2015, 13:59   #17
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию


Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  sIn:string;
  v:Double;
begin
if StringGrid1.Cells[1,1]<>'' then
begin
sIn := '';
with StringGrid1 do
for i:=0 to RowCount-1 do
begin
     if TryStrToFloat(Cells[1,i],v) then
    begin
       if sIn<>'' then sIn:=sIn+',';
       sIn := sIn + Cells[1,i];
    end;
end;
with DataModule2.ADOQuery8 do
begin
SQL.Clear;
SQL.Add('insert into VibrationCircle (f,a,v,d) select f,a1,v1,d1 from Vibration2 where f in ('+sIn+')');
ExecSQL;
SQL.Add('select * from VibrationCircle where PointID=:PointID order by f');
Open;
end;
end;

end;
Ernest027 вне форума Ответить с цитированием
Старый 10.09.2015, 13:59   #18
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
неправильно определен объект parameter
1. а присоединен ли ADO oбъект выполняющий нижеприведенный код к БД ?
Цитата:
Код:
.... := 'insert into VibrationCircle (f,a,v,d) select f,a1,v1,d1 from Vibration2 where f in ( '+sIn+' )';
Установлен ли у него ADOConnection ?

2. не закралось ли в переменную (sIn) незнамо откуда лишнее двоеточие или еще чего непонятного для SQL. (например для запятые подряд) или там совсем ничего нет (одни пробелы) ?

Цитата:
Код:
SQL.Clear;
SQL.Add('insert into VibrationCircle (f,a,v,d) select f,a1,v1,d1 from Vibration2 where f in ('+sIn+')');
ExecSQL;
SQL.Add('select * from VibrationCircle where PointID=:PointID order by f');
Open;
Кто второй раз будет чистить???
Да и параметры ПОСЛЕ изменения запроса не мешает выставлять заново.
Говорят же для каждого действия иметь СВОЙ ADO объект (именно для защиты от таких ляпов)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.09.2015 в 14:12.
evg_m вне форума Ответить с цитированием
Старый 10.09.2015, 15:27   #19
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Замучила меня эта ошибка. да какой ему еще то параметр нужен?
Один раз как-то получилось сделать все как надо, ничего не менял, во второй раз запустил проект и опять эта ошибка.

Последний раз редактировалось Ernest027; 10.09.2015 в 16:01.
Ernest027 вне форума Ответить с цитированием
Старый 10.09.2015, 16:23   #20
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Замучила меня эта ошибка. да какой ему еще то параметр нужен?
Цитата:
Код:
SQL.Clear;
SQL.Add('insert into VibrationCircle (f,a,v,d) select f,a1,v1,d1 from Vibration2 where f in ('+sIn+')');
ExecSQL;
SQL.Add('select * from VibrationCircle where PointID=:PointID order by f');
Open;
а КАКОЙ из приведенных выше ДВУХ запросов выдает такую ошибку?

1. неужто первый, то бишь insert ?
тогда смотри что в ПЕРЕМЕННОЙ sIn (только числа через запятую?
какие числа, с ДЕСЯТИЧНОЙ точкой говоришь (FLOAT) ?
я честно не знаю как поведет себя сервер если у него выставлена в качестве десятичной точки (на самом деле запятая!!!).

2. Или ВСЕ ТАКИ второй, якобы SELECT ?
НО вот Insert от ПЕРВОГО запроса НИКУДА Не ДЕЛСЯ.
А параметры ОТ "нулевого" (ведь с самого начала там был SELECT) ВПОЛНЕ себе испарились, при наших манипуляциях.
Код:
SQL.Clear;
SQL.Add('insert...');
они ведь нам ЗДЕСЬ были НЕ НУЖНЫ.
И теперь их надо задавать СНОВА!!! НЕ ЗАБЫВ СТЕРЕТЬ ПРЕДЫДУЩИЙ ЗАПРОС.

Цитата:
Кто второй раз будет чистить???
Да и параметры ПОСЛЕ изменения запроса не мешает выставлять заново.
Говорят же для каждого действия иметь СВОЙ ADO объект (именно для защиты от таких ляпов)
Цитата:
ЧТО БЫ не было НОВЫХ глюков!!!!
СДЕЛАЙ для ВСТАВКИ еще один(!!!!) набор данных ADOQueryIns !!!! а ADOQuery1(и 2) оставь ТОЛЬКО для показа!!! (select .... )
и не трогай их!!!
Не трогал бы, глядишь и параметры бы не пропадали неведомо куда,и не появлялись бы из неоткуда.
Да сам код заново писать бы не пришлось.

И еще одни НОВЫЕ(СТАРЫЕ) грабли.
Код:
select * from vibratationCilce where pointID=:pointID
НИЧЕГО не найдет если мы добавляли БЕЗ pointID !!!!
Код:
insert into VibrationCircle (f,a,v,d)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.09.2015 в 16:33.
evg_m вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование с одного листа на другой Dramen Microsoft Office Excel 1 06.09.2015 21:09
Копирование необходимого количества строк с одного листа на другой! mnemonix Microsoft Office Excel 3 13.09.2013 13:26
Копирование строк из одного файла в другой с соблюдением условия allichka Microsoft Office Excel 6 19.05.2011 16:25
Копирование к строк из одного файла в другой A_Orlov Помощь студентам 1 15.06.2010 14:49
Сортировка в StringGrid'е, копирование строк из одного SG в другой monushka Помощь студентам 3 29.10.2007 23:54