Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запись в текстовый файл
 
 автор: час   (07.11.2008 в 19:14)   личное сообщение
 
 

Для записи использую функцию


Function Zapis_V_File(Put_File As String, STROKA As String)

    Const ForReading = 1, ForWriting = 2, ForAppending = 3, TristateFalse = True
    Dim fs
    Dim a 'As Scripting.TextStream
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.OpenTextFile(Put_File, ForWriting, TristateFalse)
    a.Write STROKA
    a.Close
    Set fs = Nothing
End Function


Но каждый раз dcq предыдущие записи в текстовом файле стираются,
вопрос: дописывать возможно или сложно?
Я слыхал, что нужно переписывать весь файл с сохранением где-то уже имеющегося. текста с добавлением нового в конец........

  Ответить  
 
 автор: час   (07.11.2008 в 19:23)   личное сообщение
 
 

Вроде бы как получается вот так:


Function Dobavka_V_File(Put_File As String, STROKA As String)
hFile = FreeFile
Open Put_File For Append Access Write As hFile
Print #hFile, STROKA
Close hFile
End Function

  Ответить  
 
 автор: Анатолий (Киев)   (07.11.2008 в 19:38)   личное сообщение
 
 

И в FSO будет работать, если указать ForAppending вместо ForWriting.
Почему a.Write, а не a.WriteLine?

ЗЫ. Я предпочитаю пользоваться встроенными средствами VBA (как во втором вашем примере).
Там и возможностей больше, и никакой зависимости от внешних библиотек.
У .OpenTextFile единственное преимущество - может работать с Unicode файлами. Но это еще нужно придумать, где применить.

  Ответить  
 
 автор: час   (07.11.2008 в 20:17)   личное сообщение
 
 

Да Анатолий! (ForAppending)
Спасибо !!!
Остановлюсь на варианте без FSO, а то вдруг отвалится в самый неподходящий момент........

  Ответить  
 
 автор: Lukas   (07.11.2008 в 20:19)   личное сообщение
 
 

А вы его гвоздиками приколотите, тогда точно не отвалится.

  Ответить  
 
 автор: час   (07.11.2008 в 20:37)   личное сообщение
 
 

АААААААААААААААА Lukas - добрый вечер!!!!!!

Вот нашёл:

Кривцов Анатолий г.Киев

Кто пробовал выполнить экспорт в текстовый файл, знает, что экспортировать можно только данные из таблицы или запроса, не имеющего параметров или ссылок на элементы форм. Проблема решается созданием файла непосредственно в процедуре. Идея принадлежит Фаине Крамаровской. Предлагаемая процедура создает файл C:\WarePrice.txt в формате "Переменной длинны с разделителями".Первая строка - имена полей, разделители полей -"#", кодировка символов - DOS (функция ConvANSItoOEM). Такой метод работает быстрее, чем стандартный, и позволяет за один проход создать два и более файлов (например для экспорта в таблицы на стороне "один" и "многие").



Function EksportWarePrice()
Dim dbs As Database, qdf as QueryDef, _
rst As Recordset, NameFld As String

Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef("")

qdf.SQL= "Parameters .... Select ..."
qdf.Parameters("Имя параметра") = Значение

Set rst = qdf.OpenRecordset

If rst.BOF Then
     Exit Function
End If

Open "C:\WarePrice.txt" For Output As #1

NameFld = "WareID#WareName#Price"
Print #1, NameFld

With rst
    Do Until .EOF
        Print #1, ![WareID] & "#" _
        & ConvANSItoOEM(![WareName]) & # _
        & Format(![Price],"#.00")
        .MoveNext
    Loop
End With

Close #1

End Function 


 

  Ответить  
 
 автор: час   (07.11.2008 в 20:37)   личное сообщение
 
 

АААААААААААААААА Lukas - добрый вечер!!!!!!

Вот нашёл:

Кривцов Анатолий г.Киев писал в своё время:

Кто пробовал выполнить экспорт в текстовый файл, знает, что экспортировать можно только данные из таблицы или запроса, не имеющего параметров или ссылок на элементы форм. Проблема решается созданием файла непосредственно в процедуре. Идея принадлежит Фаине Крамаровской. Предлагаемая процедура создает файл C:\WarePrice.txt в формате "Переменной длинны с разделителями".Первая строка - имена полей, разделители полей -"#", кодировка символов - DOS (функция ConvANSItoOEM). Такой метод работает быстрее, чем стандартный, и позволяет за один проход создать два и более файлов (например для экспорта в таблицы на стороне "один" и "многие").



Function EksportWarePrice()
Dim dbs As Database, qdf as QueryDef, _
rst As Recordset, NameFld As String

Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef("")

qdf.SQL= "Parameters .... Select ..."
qdf.Parameters("Имя параметра") = Значение

Set rst = qdf.OpenRecordset

If rst.BOF Then
     Exit Function
End If

Open "C:\WarePrice.txt" For Output As #1

NameFld = "WareID#WareName#Price"
Print #1, NameFld

With rst
    Do Until .EOF
        Print #1, ![WareID] & "#" _
        & ConvANSItoOEM(![WareName]) & # _
        & Format(![Price],"#.00")
        .MoveNext
    Loop
End With

Close #1

End Function 


 

  Ответить  
 
 автор: Lukas   (07.11.2008 в 20:50)   личное сообщение
 
 

Вечер добрый Час. Что-то у меня сегодня в глазах двоится.

  Ответить  
 
 автор: час   (08.11.2008 в 15:09)   личное сообщение
 
 

Эт я дублем, дуплетом или как его там диполем,
двуокисью, близнецом, двуяйцевостью тряхнул.....

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList