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

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

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

Я столкнулся со следующей проблемой, у меня есть две колонки с типом number, в одной хранится значение 45.5, а в другой 45, но при записи в дбф файл записывается 45 и 45, а 45 и 45.5, когда я указываю разделитель 2 знака после запятой, то он применяется на обе колонки а не одну
...
Рейтинг: 0 / 0
записи в dbf
    #39758881
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
записи в dbf
    #39758885
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дозапись в существующий файл тоже работает:
Код: 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
записи в dbf
    #39758886
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Библиотека, из примера.
...
Рейтинг: 0 / 0
записи в dbf
    #39759226
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018Я столкнулся со следующей проблемой, у меня есть две колонки с типом number, в одной хранится значение 45.5, а в другой 45, но при записи в дбф файл записывается 45 и 45, а 45 и 45.5, когда я указываю разделитель 2 знака после запятой, то он применяется на обе колонки а не одну
На лицо кривизна реализации библиотеки или её использования. Попробуйте какую-нибудь другую или напишите сами, или внимательней изучите инструкцию/исходники. По сути сам DBF файл- это простой текстовый файл, форматы можно найти в интернете, даже в Википедии есть. Трудности могут начаться при использовании индексов, особенно если необходима совместимость с существующей системой.
...
Рейтинг: 0 / 0
записи в dbf
    #39759257
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я советую автору взять Hex-редактор и открыть в нем dbf-файл и найти глазами константы 45,7 или 48.

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


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