Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача данных в dbf файл [D6, MSSQL, dBase, FoxPro]


Korefey ©   (2004-05-13 17:53:00) 

Помогите решить проблему:
Создал sql запрос, в dbGrid все отображается нормально, но когда начинаю сброс в dbf-ник, в одном поле данные не верные(не такие как в dbGrid), а в остальных все нормально. Тип поля - Integer.
Че можно сделать?


Anatoly Podgoretsky   (2004-05-14 13:38:00) [1]

sniknik ©   (14.05.04 11:33) [16]
Правильно помнишь, это намного больше интегер, влазит int64
К томуже это еще и BCD, вот только Борланд потерял обработку и эмулирует ее через Double со всеми вытекающими.


sniknik   (2004-05-14 11:33:00) [2]

> В dbf NUMERIC столько сколько надо
разве? вроде бы было какоето ограничение (20/19? не помню/или в разных (dBase IV/III) по разному, да похоже так)


Korefey   (2004-05-14 11:03:00) [3]

Спасибо всем!
Получилось! Все работает нормально.


Anatoly Podgoretsky   (2004-05-14 10:17:00) [4]

Korefey ©   (14.05.04 09:57) [12]
В dbf NUMERIC столько сколько надо, в клиенте это будет уже ftFloat


Сергей Суровцев.   (2004-05-14 10:06:00) [5]

>Korefey ©   (14.05.04 09:57) [12]
>А в dbf нике какой тип? Я ставил Char - не помогло

Смотря на чем остановился. Если на String, но в dbf поле должно быть строковым 'C' размер 12 или больше. Тогда при записи приводишь данные к string и записываешь в поле.


Korefey   (2004-05-14 09:57:00) [6]

А в dbf нике какой тип?
Я ставил Char - не помогло


Леван   (2004-05-14 09:20:00) [7]

luchshe ispolzovat
table.batchmove(query,bmappend)  
vmesto posledovatelnoi obrabotki vsex polei poocheredno


Сергей Суровцев.   (2004-05-14 09:06:00) [8]

Тогда либо real (asFloat), либо храни в строковом (asString).


Anatoly Podgoretsky   (2004-05-14 09:04:00) [9]

Как чего или не выходить за пределы или использовать другие типы. В 250 грамовый стакан не налить 1 литр, не переполнив его.


Korefey   (2004-05-14 09:00:00) [10]

За пределы выхожу, так а че делать?
Какой тип использовать?


Сергей Суровцев.   (2004-05-13 23:08:00) [11]

А за пределы Integer ты часом не выходишь? max 2 147 483 647.
И то, только если размерность поля позволяет.


Korefey   (2004-05-13 21:40:00) [12]

Должно попасть ЗКПО клиента к примеру - 245147452, а попадает вообще левое число бывает что и с минусом...


Vlad   (2004-05-13 20:27:00) [13]

Ну посмотри ты что возвращает тебе
Form3.Query1.Fields[1].AsInteger

вставь в цикл строчку
showmessage(Form3.Query1.Fields[1].AsString)

И еще, ты бы уточнил что должно было бы туда попасть (в поле) и что попадает на самом деле


Korefey   (2004-05-13 19:59:00) [14]

Там так и написано на 1-ом поле(считая от 0).


MU   (2004-05-13 19:23:00) [15]

А почему не написать для "неверного" поля AsInteger?


Korefey   (2004-05-13 18:25:00) [16]

Код привожу ниже...

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 18:15:00) [17]

Где код?


Наверх

Титульная страница Поиск, карта сайта Написать письмо