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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Програмное присоединение текстового файла
 
 автор: час   (14.04.2008 в 14:26)   личное сообщение
0 Кб.
 
 

Програмное присоединение текстового файла
мне необходимо присоединить программнотекстовый файл
Что бы получиось одно поле
В каждой строке однастрока.
Не получается.
Пишу макрос преобразую , но .....
Если даже вручную присоединить прикреплёный файл получаются вместо некоторых данных какие-то квадратики.
Неговоря уже о присоединении програмно.

Иещё подскажите как создать спецификацию? (линьковки)

  Ответить  
 
 автор: час   (14.04.2008 в 16:45)   личное сообщение
 
 

А вот нашёл про спецификацию
Для импорта текстового файла с помощью команды TransferText нам необходимо иметь так называемую спецификацию импорта. Ее можно создать вручную (с помощью мастера), а можно и программно, причем при создании с помощью кода есть возможность указать строку текстового файла, с которого начинать импорт. При формировании спецификации с помощью мастера такой возможности нет. Спецификация хранится в системных таблицах Access’a MSysIMEXSpecs (заголовочная часть) и MSysIMEXColumns (описание для колонок текстового файла). Кусок кода, создающего спецификацию приведен ниже:
If DCount("*", "MSysIMEXSpecs", "SpecName=""Export_" & strTableName & "_TableToText""") = 0 Then
Set rst = db.OpenRecordset("MSysIMEXSpecs")
With rst
.AddNew
.Fields("SpecName") = "Export_" & strTableName & "_TableToText"
.Fields("DateDelim") = "."
.Fields("DateFourDigitYear") = "-1"
.Fields("DateLeadingZeros") = "-1"
.Fields("DateOrder") = 0 ' 0 - ДМГ; 1 - ДГМ; 2 - МДГ; 3 - МГД; 4 - ГДМ; 5- ГМД
.Fields("DecimalPoint") = ","
.Fields("FieldSeparator") = ";"
.Fields("FileType") = 0 ' 0 - win кодировка; 1 - dos кодировка
.Fields("SpecType") = 1 ' 2 - с полями фикс. ширины; 1 - с разделителями
.Fields("StartRow") = 1 ' 1 - первая строка содержит имена полей; 0 - нет
.Fields("TextDelim") = """"
.Fields("TimeDelim") = ":"
.UPDATE
.Bookmark = .LastModified
lngID = .Fields("SpecID")
.Close
End With
Set rst = db.OpenRecordset("MSysIMEXColumns")
lngPos = 1
For Each fld In tbl.Fields
With rst
.AddNew
.Fields("SpecID") = lngID
.Fields("FieldName") = fld.Name
.Fields("DataType") = fld.Type
.Fields("IndexType") = 0 ' 0 - нет; 1 – есть (неуникальный); 2 – есть (уникальный)
.Fields("SkipColumn") = False
.Fields("Start") = lngPos
.Fields("Width") = fld.Size
lngPos = lngPos + fld.Size
.UPDATE
End With
Next
rst.Close
End If

  Ответить  
 
 автор: palarm   (14.04.2008 в 18:29)   личное сообщение
 
 

ну так это просто программно забить таблицу нужными значениями. А я уже обрадовался, думал что нарыли, как без MSysIMEXSpecs и MSysIMEXColumns делать импорт/экспорт txt. Свою процедуру лень писать, а микрософты чего то не продумали в интерфейсе редаиктирования спецификаций - неудобно (зачем столбцы скрывают?) и вызывается она как то по тупому - только при попытке экспорта.

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

Получается так:
Сначала ручками линкуешь файл,(тода создаётся спецификация)
В строке подключения видно как называется спецификация.
Затем можно линьковать программно, вписывая в код название спецификации.

Sub Try()
DoCmd.DeleteObject acTable, "ИЗ_1С_Сюда"
Dim t As TableDef
Set t = CurrentDb.CreateTableDef("ИЗ_1С_Сюда")
t.Connect = "Text;DSN=" & "Goods" & " - спецификация связи4;" & "FMT=Fixed;HDR=NO;IMEX=2;CharacterSet=1251;DATABASE=" & "E:\Арм Сканер\Временные" & ";TABLE=" & "goods.txt"
            'Text;DSN=Goods - спецификация связи4;FMT=Fixed;HDR=NO;IMEX=2;CharacterSet=932;DATABASE=E:\Арм Сканер\Временные;TABLE=goods#txt
t.SourceTableName = "goods.txt" '"ИмяФайла"
CurrentDb.TableDefs.Append t
End Sub


Всё бы ничего но на одном из компов хоть тресни какие-то квадратики в строке в таблице
00000004;2107030162703;ツ瑙浯;ツ瑙浯;1500.24;11.000;0;0;0;0;0;0;0;1;0;0;1;1;

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