Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при выполнении динамического запроса   Найти похожие ветки 

 
Pipl   (2004-07-16 10:00) [0]

Запрос:
Form1.ClientDataSet2.Params[1].Value := StrToInt(DBGrid1.Fields[0].Text);

выдаёт ошибку: List index out of bounds (1)
Значение DBGrid1.Fields[0].Text при трассировке целое число.


 
Курдль ©   (2004-07-16 10:03) [1]

Нет параметра №1.


 
Reindeer Moss Eater ©   (2004-07-16 10:04) [2]

Ошибка при выполнении динамического запроса

До выполнения запроса дело вообще не доходит.
Так что это не ошибка при выполнении запроса.


 
Pipl   (2004-07-16 10:13) [3]

мужики, можно тут по подробнее ПЛЗ
вот начало кода,
 DBGrid1.DataSource := Form1.DataSource10;
 Form1.ClientDataSet10.Close;
 Form1.ClientDataSet10.CommandText:="Select * from TblVozvratAllTemp";
 Form1.ClientDataSet10.Open;
 DBGrid1.DataSource.DataSet.First;
...
 Form1.DBGrid1.DataSource := Form1.DataSource12;
 DBGrid1.DataSource.DataSet.First;
 While not DBGrid1.DataSource.DataSet.Eof do
   Begin
     Form1.ClientDataSet12.Close;
     Form1.ClientDataSet2.Params[1].Value := StrToInt(DBGrid1.Fields[0].Text);
     Form1.ClientDataSet12.CommandText:="Select * from TblVozvrat Where DataS = :DataVozvrat And Kod =:KodS";
...


 
Reindeer Moss Eater ©   (2004-07-16 10:15) [4]

тебе же сказали, что нет у тебя параметра с индексом 1


 
stone ©   (2004-07-16 10:17) [5]


> Pipl   (16.07.04 10:13) [3]

я подозреваю, что на этом этапе вообще параметров нет, т.к. у тебя CommandText присваивается уже после


 
Курдль ©   (2004-07-16 10:18) [6]


> Запрос:
> Form1.ClientDataSet2.Params[1].Value := StrToInt(DBGrid1.Fields[0].Text);

1. Это не запрос, а предложение Delphi. Где сам запрос?
2. Это худший вид работы с параметрами и полями - всё обезличено.

Я бы написал:

Form1.ClientDataSet2.ParamByName(имя_параметра").AsInteger := DBGrid1.DataSourse.DataSet.FieldByName("имя_поля").AsInteger;

И то при условии, что имя DataSet от меня кто-то специально скрывает :)


 
Pipl   (2004-07-16 10:19) [7]

в ClientDataSet2 -> Params-> создано 2 параметра:
0 - DataVozvrat
1 - KodS

неужели ещчё где-то создают параметры??? (с индексом 1)


 
stone ©   (2004-07-16 10:19) [8]

И вдогонку, раз уж ты CommandText присваиваешь в ран-тайм, то и присваивай его вместе со значением, типа Kod = StrToInt(...)


 
Соловьев ©   (2004-07-16 10:20) [9]


> Form1.ClientDataSet2.Params[1].Value := StrToInt(DBGrid1.Fields[0].Text);
>      Form1.ClientDataSet12.CommandText:="Select * from TblVozvrat
> Where DataS = :DataVozvrat And Kod =:KodS";

поменять местами и учти что нумерация идет с 0 параметров


 
Johnmen ©   (2004-07-16 10:22) [10]

ClientDataSet2 <> ClientDataSet12


 
Pipl   (2004-07-16 10:38) [11]

>Johnmen ©   (16.07.04 10:22) [10]
>ClientDataSet2 <> ClientDataSet12

косячёк, виноват каюсь, старая добрая не внематочность.
СПАСИБО!!!


 
Pipl   (2004-07-16 10:46) [12]

Частично переписал код, топерча стал таким:

 Form1.ClientDataSet13.Params[0].Value :=DateTostr(DateTimePicker4.Date);
 Form1.DBGrid1.DataSource := Form1.DataSource13;
 DBGrid1.DataSource.DataSet.First;
 While not DBGrid1.DataSource.DataSet.Eof do
   Begin
     Form1.ClientDataSet13.Close;
     Form1.ClientDataSet13.Params[2].AsInteger := StrToInt(DBGrid1.Fields[0].Text);
     Form1.ClientDataSet13.CommandText:="Select * from TblVozvrat Where DataS = :DataV And Kod =:KodR";
     Form1.ClientDataSet13.Aggregates[0].Expression:="Sum(Kol)";
     Form1.ClientDataSet13.Aggregates[0].Active := True;
     Form1.ClientDataSet13.AggregatesActive:= True;
     Form1.ClientDataSet13.Open;
     DBGrid1.DataSource.DataSet.Edit;
     DBGrid1.Fields[4].Text :=VarToStr(Form1.ClientDataSet12.Aggregates[0].Value) ;
     DBGrid1.DataSource.DataSet.Post;
     DBGrid1.DataSource.DataSet.Next;
   End;

при первом и втором проходе в цикле While работает, при третьем проходе, выдаёт List index out of bounds (2)
на трассировке DBGrid1.Fields[0].Text - нормальное целое число и при третьем проходе в цикле.


 
Курдль ©   (2004-07-16 10:49) [13]

Так у Вас опять параметры заполняются позже, чем появляются:

    Form1.ClientDataSet13.Params[2].AsInteger := StrToInt(DBGrid1.Fields[0].Text);
    Form1.ClientDataSet13.CommandText:="Select * from TblVozvrat Where DataS = :DataV And Kod =:KodR";


 
Pipl   (2004-07-16 10:53) [14]

DBGrid1.DataSource := Form1.DataSource10;
...
while...

StrToInt(DBGrid1.Fields[0].Text)-> это параметр из уже ранее сформированной таблы.

ошибка выходит только при третьем проходе цикла


 
Курдль ©   (2004-07-16 11:01) [15]

А вы можете работать с человеческими именами параметров, как в [6], или так и будете гадать на кофейной гуще?


 
Соловьев ©   (2004-07-16 11:01) [16]


>
> StrToInt(DBGrid1.Fields[0].Text)-> это параметр из уже ранее
> сформированной таблы.

смысл? все равно никакой роли не играет, а только траблы



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
3-1089688022
rosl
2004-07-13 07:07
2004.08.08
поиск


3-1089642536
Viz
2004-07-12 18:28
2004.08.08
Дублирующиеся записи в таблице


14-1090508707
VictorT
2004-07-22 19:05
2004.08.08
Подцепил вирус, не могу вылечить, не знаю, что вообще за вирус...


3-1089873227
Berezne
2004-07-15 10:33
2004.08.08
Как восстановить индексы?


14-1090310431
IceBeerg
2004-07-20 12:00
2004.08.08
Подскажите где можно скачать программу для дизайна комнаты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский