Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1142223627
anubis
2006-03-13 07:20
2006.05.07
Работа БД Парадокс с Екселем


15-1144992492
ANB
2006-04-14 09:28
2006.05.07
Какое число дает ошибку при математическом округлении ?


2-1145273601
shick
2006-04-17 15:33
2006.05.07
dbgrid и 2 таблицы paradox


2-1145250212
Barabashka
2006-04-17 09:03
2006.05.07
Метод Монте-Карло


11-1125985318
DmiSb
2005-09-06 09:41
2006.05.07
Применение KOLxBase ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский