|
#1
|
|||
|
|||
Запись поля dbf
Привет всем!!!
база данных dbf поле DDD тип С длина 6 на пятом месте всегда стоит дробь например 3333/3 или 4444/4 нужно получить деление т.е 1111 Теоритически надо "вырезать" запись с первой по четвертую и разделить на шестую а вот практически? Как присвоить переменной значение поля? |
#2
|
||||
|
||||
Код:
var a,b:integer; c:Single; s:string; begin ... s:=[тут твой DataSet].FieldByName('DDD').AsString; a:=StrToInt(copy(s,1,4)); b:=StrToInt(copy(s,6,1)); c:=a/b; //как вариант, без a,b c:=StrToInt(copy(s,1,4))/StrToInt(copy(s,6,1)); //Можно и без s, сам догадайся как :) end; |
#3
|
|||
|
|||
А как теперь значению другого поля ,допустим 'ааа', присвоить значение полученной переменной С
|
#4
|
||||
|
||||
А если справку почитать, или примеры, те что Demos посмотреть?
|
#5
|
|||
|
|||
к сожалению английским не владею, а в своей деревне литературу найти трудно. Поэтому и задаю такие детские вопросы.
|
#6
|
||||
|
||||
Код:
[Твой DataSet].Edit; [Твой DataSet].FieldByName('AAA').AsFloat:=c; [Твой DataSet].Post; |
#7
|
|||
|
|||
Спасибо большое !!!
|
#8
|
|||
|
|||
Сделал так кинул код на батон
var s:string; c:Single; begin s:=table2.FieldByName('DDD').asString; c:= StrToInt(copy(s,1,4))/ StrToInt(copy(s,6,1)); table2.Edit ; table2.FieldByName('AAA').AsFloat:=c; table2.Post; end; выдает ошибку ''4444' is not a Valid integer value что делать? |
#9
|
||||
|
||||
Значит данные у тебя в поле не такие как ты описал.
Специально проверил: Код:
var c:Single; a:String; begin a:='4444\4'; c:=StrToInt(Copy(a,1,4))/StrToInt(Copy(a,6,1)); ShowMessage(FloatToStr(c)); end; Возможно поле в которое ты записываешь значение переменной у тебя целочисленное. Тогда попробуй так: Код:
var s:string; c:Integer; begin s:=table2.FieldByName('DDD').asString; c:= StrToInt(copy(s,1,4)) div StrToInt(copy(s,6,1)); table2.Edit ; table2.FieldByName('AAA').AsInteger:=c; table2.Post; end; Код:
var s:string; c:Single; begin s:=table2.FieldByName('DDD').asString; c:= StrToInt(copy(s,1,4))/ StrToInt(copy(s,6,1)); table2.Edit ; table2.FieldByName('AAA').AsInteger:=Trunc(c); table2.Post; end; |
#10
|
|||
|
|||
Да ошибка была в моих данных.
в поле Ddd стояли данные типа 4444/4, 444/4, 44/4 длина поля 6 дробь всегда на пятом месте Если не сложно подскажи как игнорировать пробелы и работать только с целыми числами. |
#11
|
||||
|
||||
Цитата:
Функция срезающая начальные и конечные пробелы в строке - Trim |