Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: CL | DM;

Вниз

Передача данных в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.038 c
14-1085019580
Думкин
2004-05-20 06:19
2004.06.06
С днем рождения! 20 мая


3-1084782386
Goida
2004-05-17 12:26
2004.06.06
Где компоненты для работы с Sybase?


4-1083503715
RainKM
2004-05-02 17:15
2004.06.06
SHBrowseForFolder


14-1085150744
beast
2004-05-21 18:45
2004.06.06
Где можно найти?


3-1084805796
Voland777
2004-05-17 18:56
2004.06.06
Почему не находит нужную запись?