|
0 Кб. |
|
| нужно из текстового файла перенести данные в dbf
поля разделены символом |
В видеофокспро пишу так:
create table mytable(f1 c(200), f2 c(200) и т.д. ...)
use mytable
APPEND FROM 'e:\Valera\ARMs_ForSAP\Оборотка\Convert.txt' DELIMITED WITH CHARACTER |
|
проходит нормально. формируется dbf и заполняется данными
при попытке запуска через ado и Microsoft OLE DB Provider for Visual FoxPro
примерно так:
Sub werfgqwefwe()
Dim con As ADODB.Connection
Dim cmd As ADODB.Connection
Set con = New ADODB.Connection
Dim LocalPath As String
LocalPath = CurrentProject.Path
con.Open "Provider=Microsoft OLE DB Provider for Visual FoxPro;Data Source=" & LocalPath
Dim i As Integer
Dim strFlds As String
For i = 1 To 20
strFlds = strFlds & "," & "f" & i & " c(200)"
Next
strFlds = "create table mytable(" & Mid(strFlds, 2) & ")"
con.Execute strFlds
con.Execute "EXECSCRIPT(" & _
"[USE mytable EXCLUSIVE] + chr(13) + " & _
"[APPEND FROM 'e:\Valera\ARMs_ForSAP\Оборотка\Convert.txt' DELIMITED WITH CHARACTER |])"
'con.Execute "use mytable"
'con.Execute "APPEND FROM 'e:\Valera\ARMs_ForSAP\Оборотка\Convert.txt' DELIMITED WITH CHARACTER |"
'con.Execute "CLOSE ALL"
con.Close
Set con = Nothing
End Sub
|
это номер не проходит :/
как быть?
(тектовый файл прилагаю) | |
|
| |
|
|
|
| Провайдер не поддерживает команды Import и Export, а следовательно и другие команды, где формат источника/адресата отличается от DBF (ИМХО). В вашем случае проще всего читать текстовый файл построчно, дерибанить строку на части (Split(s, "|")) и добавлять записи в Recordset. Можно конечно открыть второй Recordset на базе текстового файла или даже выполнить SELECT * INTO из текстового файла в DBF (используя VFP драйвер), но уж больно много мороки.
ЗЫ. Файл у вас какой-то странный. В одих полях десятичный разделитель ".", в других - ",". | |
|
| |
|
|
|
| Спасибо Анатолий
у меня уже забегали мысли по поводу.... вот рожаю сейчас
CurrentDb.Execute "SELECT * INTO [mytable#dbf] IN 'd:\'[ODBC;DSN=Visual FoxPro Tables;SourceDB=d:\;SourceType=DBF] " & _
"FROM Convert#txt IN 'e:\Victor_M\1\'[Text;HDR=No;IMEX=2;CharacterSet=866;]"
|
что-то типа... может и пройдет
**
построчно не очень хочется - файл записей на 17-20 тысяч
**
разделители странные в САПе (немцы нахомутали :) - или наши уже подправили чего) | |
|
| |
|
|
|
| С разбегу файл с разделителем "|" файл не прочитаешь. Нужно либо создать и сохранить спецификацию импорта в Access, и тогда [Text;DSN=Имя спецификации;HDR=No], или создать в той же папке файл Schema.ini со спецификацией для этого файла, и тогда - [Text;]
Подробнее здесь | |
|
| |
|
|
|
| >>С разбегу файл с разделителем "|" файл не прочитаешь...
это я в курсе. просто вообще вариант такой пробую. завтра уже посмотрю | |
|
| |