Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизXSQLDA index out of range Найти похожие ветки
← →
ali_tash (2005-05-28 04:55) [0]это сообщение об ошибке выходит когда я пытаюсь сделать INSERT
в эту таблицу
CREATE GENERATOR GEN_SN_FILE;
CREATE TABLE SN_FILE (
CODE INTEGER NOT NULL,
FILE_TYPE CHAR(1) NOT NULL,
LINE VARCHAR(4000),
DIRECTION SMALLINT NOT NULL,
CODE_ORG SMALLINT NOT NULL
);
ALTER TABLE SN_FILE ADD CONSTRAINT CHK_SN_FILE check (FILE_TYPE IN ("A","D"));
ALTER TABLE SN_FILE ADD CONSTRAINT PK_SN_FILE PRIMARY KEY (CODE);
CREATE INDEX NDX_SN_FILE_TYPE ON SN_FILE (FILE_TYPE);
SET TERM ^ ;
/* Trigger: TR_BI_SN_FILE */
CREATE TRIGGER TR_BI_SN_FILE FOR SN_FILE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CODE = GEN_ID(GEN_SN_FILE,1);
END
^
SET TERM ; ^
из этой процедуры
function TDataProcessor.List2Table(var ErrMsg: string): Boolean;
var
i: Integer; //FQuery: TIBQuery
begin
Result:=True;
try
FQuery.SQL.Text:= "DELETE FROM SN_FILE WHERE FILE_TYPE=""D"" AND DIRECTION="+FDirection+" AND CODE_ORG="+FGetterCode+";";
FQuery.ExecSQL;
for I := 0 to FListFile.Count - 1 do
begin
FQuery.SQL.Text:="INSERT INTO SN_FILE (FILE_TYPE, LINE, DIRECTION, CODE_ORG) VALUES"
+"(""D"","+QuotedStr(FListFile.Strings[i])+","+FDirection+","+FGetterCode+");";
FQuery.ExecSQL;
Inc(FRowsProcessed);
if FRowsProcessed > MaxRowsProcessed then
begin
Application.ProcessMessages;
FRowsProcessed:= 1;
end;
end;
except on E: Exception do
begin
ErrMsg:=E.Message + FListFile.Strings[i]+#13+"Line = "+IntToStr(i);
Result:=False;
FQuery.Transaction.RollbackRetaining;
end;
end;
end;
Строка с инсертом на которой возникает исключительная ситуация
без этой процедуры проходит без ошибок.
Помогите разобратся в чем проблема ?
← →
ali_tash (2005-05-28 05:08) [1]забыл написать .
перед тем как возникает ошибка, эта процедура успевает вставить в таблицу более 7 тыс записей
← →
Zacho © (2005-05-28 11:04) [2]Может, просто использовать именно те компоненты, которые нужны ? Т.е. для выполнения запросов есть TIBSQL, а TIBQuery вообще лучше выкинуть нафиг.
И попробуй поставить последний апдейт IBX.
И ещё не помешает почитать http://www.ibase.ru/devinfo/generator.htm
← →
DSKalugin © (2005-05-28 13:11) [3]DIRECTION SMALLINT NOT NULL,
CODE_ORG SMALLINT NOT NULL
SMALLINT это целочисленное значение -32768 до +32767
Возможно ты пытаешься вставить значение, которые выходит за границы этого диапазона допустимых значений
П.С. Код не оптимизирован. Его можно ускорить
← →
ali_tash (2005-05-28 23:20) [4]DSKalugin нет за диапазон значения не выходят
code_org=1 direction=6
а строка с инсертом на которой выходит ошибка, в IB Expert проходит.
← →
stud © (2005-05-30 09:18) [5]а при трассировке как выглядит FQuery.SQL.Text?
← →
ЮЮ © (2005-05-30 09:28) [6]Т.е. 7 тыс. записей в рамках одной транзакции? А это не может быть причиной ошибки?
← →
DSKalugin © (2005-05-30 11:23) [7]2 ЮЮ © (30.05.05 09:28) [6]
не может
у меня ежедневно проходит больше модификаций в контексте одной транзакции.
В коде нет почемуто явного старта и подтверждения транзакции, а надо бы.
Сервер то какой версии?
← →
stud © (2005-05-30 11:27) [8]
> QuotedStr(FListFile.Strings[i])+
здается мне ошибка именно здесь. скорее всего значение возвращается в таком виде, что воспринимается как несколько параметровнапример в передаваемой строке есть апострофы и запятые
← →
ali_tash (2005-05-31 00:39) [9]stud
Да в строке есть апострофы и запятые
, но эта строка в IB Expert выполняется нормально, похоже что это глюк IB .
пороблему решил загрузкой в BLOB.
спасибо.
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.038 c