Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
ВнизТип данных Найти похожие ветки
← →
IntruderLab © (2006-04-19 10:45) [0]Доброго дня!!!
ситуевина такая, есть функция
function GetNewBlank(sMin : String; sMax : String) : Boolean;
var i : Longint ; sId : String; iMin : Longint; iMax : Longint;
begin
sId := frmMain.adotLIST_BLANK_PACK.FieldByName("lbp_id").AsString;
iMin := StrToInt64(sMin);
iMax := StrToInt64(sMax);
for i := iMin to iMax do
begin
frmMain.adotLIST_BLANK.Insert;
frmMain.adotLIST_BLANK.FieldByName("blank_number_1").AsString := IntToStr(i);
frmMain.adotLIST_BLANK.FieldByName("blank_userid").AsString := frmMain.sUSER_ID;
frmMain.adotLIST_BLANK.FieldByName("blank_status").AsInteger := 5;
frmMain.adotLIST_BLANK.FieldByName("blank_pack").AsString := sId;
frmMain.adotLIST_BLANK.Post;
end;
Result := True;
end;
Длина номера билета 10 символов, мне необходимо сформировать список билетов по их номеру и запихать их в базу, какой типа данных для i применить, так как получается какая то фигня
← →
Плохиш © (2006-04-19 11:05) [1]
> var i : Longint ; sId : String; iMin : Longint; iMax : Longint;
> iMin := StrToInt64(sMin);
Интересный выбор типов и функций. Может стоит на F1 для начала понажимать?
← →
MBo © (2006-04-19 11:06) [2]>iMin : Longint
> iMin := StrToInt64(sMin);
Это несет какой-то тайный смысл?
← →
Сергей М. © (2006-04-19 11:09) [3]
> какой типа данных для i применить
Это немало зависит от типа данных поля "blank_number_1"
← →
IntruderLab © (2006-04-19 11:10) [4]Вобщем как я подозреваю Integer не поможет так как 10 символов не поместиться, Int64 какую то фигню выдает
← →
IntruderLab © (2006-04-19 11:12) [5]Сергей М. © (19.04.06 11:09) [3]
> какой типа данных для i применить
Это немало зависит от типа данных поля "blank_number_1"
в базе данных номер у меня nvarchar[10]
← →
Сергей М. © (2006-04-19 11:13) [6]
> IntruderLab © (19.04.06 11:12) [5]
СУБД какая ?
Почему не был выбран тип поля BIGINT (или его аналог, если имеется) ?
← →
IntruderLab © (2006-04-19 11:17) [7]СУБД MS SQL Server 2000 а причем здесь это то?
ситуевина вот в чем, в форме задается ранж бланков от стольки до стольки, длина номера 10 символов, какой тип данных подойдет для хранения числа в 10 символов - вот и весь вопрос?
← →
balepa © (2006-04-19 11:20) [8]function GetNewBlank(sMin : String; sMax : String) : Boolean;
А обязательно передавать параметры типа String можно сразу Integer и отпадет необходимость объявлять еще и iMax, iMin
← →
IntruderLab © (2006-04-19 11:23) [9]Integer не подойдет, повторяю еще раз (слишком маленькое максимальное значение), нужен ответ из типа данных, которым можно заменить Int
← →
IntruderLab © (2006-04-19 11:28) [10]function GetNewBlank(sMin : String; sMax : String) : Boolean;
var i, iMin, iMax : Integer; sId : String;
begin
sId := frmMain.adotLIST_BLANK_PACK.FieldByName("lbp_id").AsString;
iMin := StrToInt64(sMin);
iMax := StrToInt64(sMax);
for i := iMin to iMax do
begin
frmMain.adotLIST_BLANK.Insert;
frmMain.adotLIST_BLANK.FieldByName("blank_number_1").AsString := IntToStr(i);
frmMain.adotLIST_BLANK.FieldByName("blank_userid").AsString := frmMain.sUSER_ID;
frmMain.adotLIST_BLANK.FieldByName("blank_status").AsInteger := 5;
frmMain.adotLIST_BLANK.FieldByName("blank_pack").AsString := sId;
frmMain.adotLIST_BLANK.Post;
end;
Result := True;
end;
Для тех кто пытается помочь уменьшением переменных: так все работает до того момента пока число меньше 2147483647, после этого работать перестает
← →
Плохиш © (2006-04-19 11:34) [11]
> IntruderLab © (19.04.06 11:28) [10]
Хм, ну я могу понять почему не отвечают на [1], но вот почему нет ответа на [2] выше моего понимания.
← →
Сергей М. © (2006-04-19 11:37) [12]
> причем здесь это то?
Притом что MSSQL поддерживает Int64-совместимый тип данных, и почему он не был задействован при разработке базы - для меня загадка.
> IntruderLab © (19.04.06 11:23) [9]
> Integer не подойдет
Значит параметры ф-ции должны иметь тип Int64, а не Integer.
← →
IntruderLab © (2006-04-19 11:41) [13]Ладно, проблему я решил :) не будем вдаваться в подробности почему при разработке не учитывался тип данных, но кому интересно, то функцию я переделал так:
function GetNewBlank(sMin : String; iCount : Integer) : Boolean;
var i: Integer; iMin : Int64; sId : String;
begin
sId := frmMain.adotLIST_BLANK_PACK.FieldByName("lbp_id").AsString;
iMin := StrToInt64(sMin);
for i := 0 to iCount-1 do
begin
frmMain.adotLIST_BLANK.Insert;
frmMain.adotLIST_BLANK.FieldByName("blank_number_1").AsString := IntToStr(iMin);
frmMain.adotLIST_BLANK.FieldByName("blank_userid").AsString := frmMain.sUSER_ID;
frmMain.adotLIST_BLANK.FieldByName("blank_status").AsInteger := 5;
frmMain.adotLIST_BLANK.FieldByName("blank_pack").AsString := sId;
frmMain.adotLIST_BLANK.Post;
iMin:=iMin+1;
end;
Result := True;
end;
← →
balepa © (2006-04-19 11:56) [14]IntruderLab © (19.04.06 11:28) [10]
Integer -2147483648..2147483647 signed 32-bit
Cardinal 0..4294967295 unsigned 32-bit
Type Range Format
Shortint -128..127 signed 8-bit
Smallint -32768..32767 signed 16-bit
Longint -2147483648..2147483647 signed 32-bit
Int64 -2^63..2^63-1 signed 64-bit
Byte 0..255 unsigned 8-bit
Word 0..65535 unsigned 16-bit
Longword 0..4294967295 unsigned 32-bit
← →
IntruderLab © (2006-04-19 12:47) [15]я думаю, что пора закрыть обсуждение, но за помощь спасибо
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c