Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
ВнизПередача данных в dbf файл Найти похожие ветки
← →
Korefey © (2004-05-13 17:53) [0]Помогите решить проблему:
Создал sql запрос, в dbGrid все отображается нормально, но когда начинаю сброс в dbf-ник, в одном поле данные не верные(не такие как в dbGrid), а в остальных все нормально. Тип поля - Integer.
Че можно сделать?
← →
MU (2004-05-13 18:15) [1]Где код?
← →
Korefey © (2004-05-13 18:25) [2]Код привожу ниже...
Table1.Close;
Query1.Active:=False;
Query1.Close;
Query1.SQl.Clear;
Query1.SQl.Add("select depo26.nom_schet, depo26.zkpo, depo26.naz_schet,");
Query1.SQl.Add("depo26.Nom_Kl, depo_k.N_Dog, depo_k.FIO, depo_k.passp,");
Query1.SQl.Add("depo_k.Nom_Kart, depo_k.Nom_Schet,");
Query1.SQl.Add("depo_k.Adres, Data_Pol, depo_k.Type, depo_k.Data_Otkr,");
Query1.SQl.Add("Depozit.dateclz, Depozit.rshet");
Query1.SQl.Add("from depo26, depo_k, Depozit");
Query1.SQl.Add("where depo_k.iden_kod = depozit.okpo");
Query1.SQl.Add("and depo26.zkpo = depo_k.iden_kod");
Query1.SQl.Add("order by nom_schet");
DataSource2.DataSet:=Query1;
//DBGrid1.DataSource:=DataSource2;
Query1.ExecSQL;
Query1.Active:=True;
// Сброс инфы в depozit2
//Form3.Table2.Active:=False;
//Form3.Table2.TableName:="Depozit2.dbf";
Form3.Table2.Active:=True;
Form4.ProgressBar1.Min:=0;
Form4.ProgressBar1.Max:=Form3.Query1.Recordcount;
Form4.Visible:=True;
query1.First;
while not query1.Eof do begin
Form3.table2.Insert;
Form3.table2.Fields[0].AsVariant:=Form3.Query1.Fields[0].AsVariant;
Form3.table2.Fields[1].AsInteger:=Form3.Query1.Fields[1].AsInteger;
Form3.table2.Fields[2].AsVariant:=Form3.Query1.Fields[2].AsVariant;
Form3.table2.Fields[3].AsVariant:=Form3.Query1.Fields[3].asvariant;
Form3.table2.Fields[4].AsVariant:=Form3.Query1.Fields[4].asvariant;
Form3.table2.Fields[5].AsVariant:=Form3.Query1.Fields[5].asvariant;
Form3.table2.Fields[6].AsVariant:=Form3.Query1.Fields[6].asvariant;
Form3.table2.Fields[7].AsVariant:=Form3.Query1.Fields[7].asvariant;
Form3.table2.Fields[8].AsVariant:=Form3.Query1.Fields[8].asvariant;
Form3.table2.Fields[9].AsVariant:=Form3.Query1.Fields[9].asvariant;
Form3.table2.Fields[10].AsVariant:=Form3.Query1.Fields[10].asvariant;
Form3.table2.Fields[11].AsVariant:=Form3.Query1.Fields[11].asvariant;
Form3.table2.Fields[12].AsVariant:=Form3.Query1.Fields[12].asvariant;
Form3.table2.Fields[13].AsVariant:=Form3.Query1.Fields[13].asvariant;
Form3.table2.Fields[14].AsVariant:=Form3.Query1.Fields[14].asvariant;
Form3.table2.Post;
Form4.ProgressBar1.Position:=Form3.Query1.recno;
Form3.query1.Next;
end;
DBGrid1.DataSource:=DataSource2;
Form4.Visible:=False;
← →
MU (2004-05-13 19:23) [3]А почему не написать для "неверного" поля AsInteger?
← →
Korefey © (2004-05-13 19:59) [4]Там так и написано на 1-ом поле(считая от 0).
← →
Vlad © (2004-05-13 20:27) [5]Ну посмотри ты что возвращает тебе
Form3.Query1.Fields[1].AsInteger
вставь в цикл строчку
showmessage(Form3.Query1.Fields[1].AsString)
И еще, ты бы уточнил что должно было бы туда попасть (в поле) и что попадает на самом деле
← →
Korefey © (2004-05-13 21:40) [6]Должно попасть ЗКПО клиента к примеру - 245147452, а попадает вообще левое число бывает что и с минусом...
← →
Сергей Суровцев. (2004-05-13 23:08) [7]А за пределы Integer ты часом не выходишь? max 2 147 483 647.
И то, только если размерность поля позволяет.
← →
Korefey © (2004-05-14 09:00) [8]За пределы выхожу, так а че делать?
Какой тип использовать?
← →
Anatoly Podgoretsky © (2004-05-14 09:04) [9]Как чего или не выходить за пределы или использовать другие типы. В 250 грамовый стакан не налить 1 литр, не переполнив его.
← →
Сергей Суровцев. (2004-05-14 09:06) [10]Тогда либо real (asFloat), либо храни в строковом (asString).
← →
Леван (2004-05-14 09:20) [11]luchshe ispolzovat
table.batchmove(query,bmappend)
vmesto posledovatelnoi obrabotki vsex polei poocheredno
← →
Korefey © (2004-05-14 09:57) [12]А в dbf нике какой тип?
Я ставил Char - не помогло
← →
Сергей Суровцев. (2004-05-14 10:06) [13]>Korefey © (14.05.04 09:57) [12]
>А в dbf нике какой тип? Я ставил Char - не помогло
Смотря на чем остановился. Если на String, но в dbf поле должно быть строковым "C" размер 12 или больше. Тогда при записи приводишь данные к string и записываешь в поле.
← →
Anatoly Podgoretsky © (2004-05-14 10:17) [14]Korefey © (14.05.04 09:57) [12]
В dbf NUMERIC столько сколько надо, в клиенте это будет уже ftFloat
← →
Korefey © (2004-05-14 11:03) [15]Спасибо всем!
Получилось! Все работает нормально.
← →
sniknik © (2004-05-14 11:33) [16]> В dbf NUMERIC столько сколько надо
разве? вроде бы было какоето ограничение (20/19? не помню/или в разных (dBase IV/III) по разному, да похоже так)
← →
Anatoly Podgoretsky © (2004-05-14 13:38) [17]sniknik © (14.05.04 11:33) [16]
Правильно помнишь, это намного больше интегер, влазит int64
К томуже это еще и BCD, вот только Борланд потерял обработку и эмулирует ее через Double со всеми вытекающими.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.065 c