Запись в файл в OpenOffice 2.2

Модератор: Модераторы разделов

Аватара пользователя
AMD
Сообщения: 478
Статус: Maestro
ОС: Linux Kubuntu 7.10

Запись в файл в OpenOffice 2.2

Сообщение AMD »

Вот такая задача нужно создать маленкую базу по платежкам
имею показатели (как пример кратко)

Номер платежки (переменая Nr as Long)
Ссума (переменая Suma as Double)
Получатель (переменая Firma as String*40) 'Зарезервировал 40символов хотя под опен бейсик ей серовно если будет больше она пропустит

В VBA я делал так

Type BDstroka
Nr as Long
Suma As Double
Firma as String * 40
End Type


sub Zapisi
Dim Puti
Puti = Cale(StarDesktop.CurrentComponent.getURL()) & "baza"

Dim Vvod as BDstroka
DIM Col as Integer
Col=3 ' номер столбца откуда будем вводить даные
Vvod.Nr = Cells(2,Col)
Vvod.Suma = Cells(3,Col)
Vvod.Firma = Cells(4,Col)

Dim Fisier
Fisier = FreeFile
Open Puti For Random As #Fisier Len = Len(Vvod) 'открываем файл для записи в Len записываем длину строки которая исходит из длины переменой Vvod у которой длина должна быть постояной
Put #Fisier, 1, Vvod
Close #Fisier
End Sub


sub Zagruzka
Dim Puti
Puti = Cale(StarDesktop.CurrentComponent.getURL()) & "baza"

Dim Vvod as BDstroka
DIM Col as Integer
Col=3 ' номер столбца куда будем вводить даные

Dim Fisier
Fisier = FreeFile
Open Puti For Random As #Fisier Len = Len(Vvod) 'открываем файл для чтения
Get #Fisier, 1, Vvod
Close #Fisier

Cells(2,Col) = Vvod.Nr
Cells(3,Col) = Vvod.Suma
Cells(4,Col) = Vvod.Firma

End Sub


Public Function Cale(Calea as String) as String 'Вычесляет путь где находится открытый файл опенофис
DIM Lungimea,I,Pozitia as integer
Lungimea = len(Calea)

If lungimea>0 Then
For I=1 to lungimea
IF mid(Calea, lungimea-I+1,1)="/" or mid(Calea, lungimea-I+1,1)="\" then
Pozitia=lungimea-I+1
exit for
end if
Next I
Cale=left(Calea,pozitia)
else
Cale=""
End If
End Function


Но у меня пару проблем!!!
1. Len(Vvod) не хочет вычислять длину переменой читает только по запчастям
типа Len(Vvod.Nr) + Len(Vvod.Suma) + Len(Vvod.Firma) - ну и ладно если нет более оптимального пути
2. Len(Vvod.Suma) возвращает 1 а по идее раз Double надо 2 возвращать или я неправ?
3. Put #Fisier, 1, Vvod выдает ошибку при записи в файл - не хочет работать с переменами даного типа вот как это решить?
Спасибо сказали: