Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / записи в dbf / 8 сообщений из 8, страница 1 из 1
04.01.2019, 18:47
    #39755929
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
Подскажите кто сталкивался, при записи данных в dbf файл поля типа number со значением 45,7 записывается как 48!!
Почему так получается?? И можно ли это обойти? Для формирования файла использую библиотеку javadbf.
Буду благодарен за любой совет!
...
Рейтинг: 0 / 0
05.01.2019, 16:53
    #39756113
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
Из спецификации javadbf (первая попавшаяся в интернете):
NUMERIC ('N', 1, 32, 0, true)
Вроде бы 45.7 не помещается...

Возможно это про другую библиотеку.
См. сами тщательно спецификацию вашей библиотека.
...
Рейтинг: 0 / 0
08.01.2019, 14:15
    #39756740
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
d7iИз спецификации javadbf (первая попавшаяся в интернете):
NUMERIC ('N', 1, 32, 0, true)
Вроде бы 45.7 не помещается...

Возможно это про другую библиотеку.
См. сами тщательно спецификацию вашей библиотека.

Я столкнулся со следующей проблемой, у меня есть две колонки с типом number, в одной хранится значение 45.5, а в другой 45, но при записи в дбф файл записывается 45 и 45, а 45 и 45.5, когда я указываю разделитель 2 знака после запятой, то он применяется на обе колонки а не одну
...
Рейтинг: 0 / 0
13.01.2019, 01:12
    #39758881
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
vlad2018, Вроде все норм работает:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
package test;

import com.linuxense.javadbf.*;
import java.io.*;

public class DBFWriterTest {

  public static void main( String args[])
  throws DBFException, IOException {

    // let us create field definitions first
    // we will go for 3 fields
    //
    DBFField fields[] = new DBFField[3];

    fields[0] = new DBFField();
    fields[0].setName( "emp_code");
    fields[0].setDataType( DBFField.FIELD_TYPE_C);
    fields[0].setFieldLength( 10);

    fields[1] = new DBFField();
    fields[1].setName( "emp_name");
    fields[1].setDataType( DBFField.FIELD_TYPE_C);
    fields[1].setFieldLength( 20);

    fields[2] = new DBFField();
    fields[2].setName( "salary");
    fields[2].setDataType( DBFField.FIELD_TYPE_N);
    fields[2].setFieldLength( 12);
    fields[2].setDecimalCount( 2);

    DBFWriter writer = new DBFWriter();
    writer.setFields( fields);

    // now populate DBFWriter
    //

    Object rowData[] = new Object[3];
    rowData[0] = "1000";
    rowData[1] = "John";
    rowData[2] = new Double(45.00);

    writer.addRecord( rowData);

    rowData = new Object[3];
    rowData[0] = "1001";
    rowData[1] = "Lalit";
    rowData[2] = new Double(45.70);

    writer.addRecord( rowData);

    rowData = new Object[3];
    rowData[0] = "1002";
    rowData[1] = "Rohit";
    rowData[2] = new Double( 45.50);

    writer.addRecord( rowData);

    FileOutputStream fos = new FileOutputStream(args[0]);
    writer.write( fos);
    fos.close();
  }
}



Ссылка на пример - ftp://priede.bf.lu.lv/pub/DatuBazes/DBF/javadbf/javadbf-tutorial.html
...
Рейтинг: 0 / 0
13.01.2019, 01:47
    #39758885
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
Дозапись в существующий файл тоже работает:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
package test;

import com.linuxense.javadbf.*;
import java.io.*;

public class DBFWriterTest {

  public static void main( String args[])
  throws DBFException, IOException {

    // let us create field definitions first
    // we will go for 3 fields
    //
    DBFField fields[] = new DBFField[4];

    fields[0] = new DBFField();
    fields[0].setName( "emp_code");
    fields[0].setDataType( DBFField.FIELD_TYPE_C);
    fields[0].setFieldLength( 10);

    fields[1] = new DBFField();
    fields[1].setName( "emp_name");
    fields[1].setDataType( DBFField.FIELD_TYPE_C);
    fields[1].setFieldLength( 20);

    fields[2] = new DBFField();
    fields[2].setName("salary");
    fields[2].setDataType( DBFField.FIELD_TYPE_N);
    fields[2].setFieldLength(12);
    fields[2].setDecimalCount(2);

    fields[3] = new DBFField();
    fields[3].setName( "ert");
    fields[3].setDataType(DBFField.FIELD_TYPE_N);
    fields[3].setFieldLength(12);
    fields[3].setDecimalCount(0);
    
    DBFWriter writer = new DBFWriter(new File(args[0]));
   // writer.setFields( fields);

    // now populate DBFWriter
    //

    Object rowData[] = new Object[4];
    rowData[0] = "1000";
    rowData[1] = "John";
    rowData[2] = new Double(45.00);
    rowData[3] = new Double(45.00);

    writer.addRecord( rowData);

    rowData = new Object[4];
    rowData[0] = "1001";
    rowData[1] = "Lalit";
    rowData[2] = new Double(45.70);
    rowData[3] = new Double(45.00);

    writer.addRecord( rowData);

    rowData = new Object[4];
    rowData[0] = "1002";
    rowData[1] = "Rohit";
    rowData[2] = new Double( 45.55);
    rowData[3] = new Double(45.00);

    writer.addRecord(rowData);

    //FileOutputStream fos = new FileOutputStream(args[0]);
    writer.write();
    //fos.close();
  }
}
...
Рейтинг: 0 / 0
13.01.2019, 01:50
    #39758886
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
Библиотека, из примера.
...
Рейтинг: 0 / 0
14.01.2019, 11:17
    #39759226
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
vlad2018Я столкнулся со следующей проблемой, у меня есть две колонки с типом number, в одной хранится значение 45.5, а в другой 45, но при записи в дбф файл записывается 45 и 45, а 45 и 45.5, когда я указываю разделитель 2 знака после запятой, то он применяется на обе колонки а не одну
На лицо кривизна реализации библиотеки или её использования. Попробуйте какую-нибудь другую или напишите сами, или внимательней изучите инструкцию/исходники. По сути сам DBF файл- это простой текстовый файл, форматы можно найти в интернете, даже в Википедии есть. Трудности могут начаться при использовании индексов, особенно если необходима совместимость с существующей системой.
...
Рейтинг: 0 / 0
14.01.2019, 12:28
    #39759257
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
записи в dbf
Я советую автору взять Hex-редактор и открыть в нем dbf-файл и найти глазами константы 45,7 или 48.

По результату можно будет говорить что дальше. Иначе мы обсуждаем не dbf а погрешности в реализции
разных dbf-драйверов и приложений.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / записи в dbf / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]