Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2013, 10:32   #1
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию Некорректная выгрузка из файла

Всем добрый день! Возникла проблема,связанная с моим рабочим проектом (http://programmersforum.ru/showthread.php?t=227046 - тут тема,касательная других проблем проекта,также есть о импорте из файла), при тестровании программы я обнаружил такой то ли баг,то ли непонятно что:

При импорте из одного файла,допустим файла "А" - происходит импорт всех 20-ти столбцов со всеми данными, в каждом столбце и строчке есть информация, все хорошо.

Далее,при импорте из файла "В", который абсолютно идентичен структуре файла "А", данные из 20-ти столбцов копируются не полностью. А именно - импортируется информации из первых 8-ми столбцов, а остальные пусты (хотя данные там есть), самое примечательное то, что в этом файле 11 строчек, и криво импортируются 8 из них, 3 строчки содержат в себе полную информацию!

Почему так? Два файла - результат разный?И только что проверил третий файл - импорт происходит нормально. Проблема в коде (кнопка одна на все)?

З.Ы. Выгрузка текстовых файлов производится ИТ-шниками на фтп сервер

Последний раз редактировалось Emmelman; 15.03.2013 в 10:35.
Emmelman вне форума Ответить с цитированием
Старый 15.03.2013, 14:29   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Emmelman.
Ваше описание проблемы не позволяет дать совет, т.к. можно только догадываться о "идентичности структуры".
Выложите файлы "А" и "В", возможно это увеличит шансы.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 15.03.2013, 14:44   #3
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

Да,Евгений, вы правы, информация конфиденциальная,поэтому не знаю как правильно мне выложить все это дело :\ просто,если я почищу файл, то мб непонятно будет(

Последний раз редактировалось Emmelman; 15.03.2013 в 15:00.
Emmelman вне форума Ответить с цитированием
Старый 15.03.2013, 16:37   #4
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Emmelman,
если что, скиньте мне на почту проблемные файлы (их части) в понедельник (раньше не смогу протестировать)
aeg-aeg list ru
Андрэич вне форума Ответить с цитированием
Старый 15.03.2013, 17:39   #5
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
Сообщение

Вот, придумал как сделать, выкладываю файл! В нем первая строчка - названия столбцов, далее идет строчка, которая импортируется НЕ ПОЛНОСТЬЮ, последняя импортируется ПОЛНОСТЬЮ! Copy.txt

вот код моей кнопки, чтобы все заработало надо - создать таблицу с такими же названиями столбцов как они прописаны в коде, создать файл schema.ini и положить его в папку с вышеуказанным файлом и все. Кнопку можно тестить.

Я предварительно импортнул в эксель - он все делает правильно, обе строчки, мой же код нормальной делает только вторую(

код кнопки (на строчке с CurrentDB.Execute я понаставил переносов, в коде все в одну строчку надо сделать) :
Код:
Private Sub Command5_Click()
'On Error GoTo Err_Command5_Click
Dim MyT As ADODB.Recordset
    Set MyT = New ADODB.Recordset
    MyT.Open "Operations", CurrentProject.Connection, adOpenKeyset,   adLockOptimistic
    With MyT


Dim MyD As String
Dim MyG As String
Dim FileName As String
Dim FilePath As String
Dim fDialog As Office.FileDialog
Dim varFile As Variant
     Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
       With fDialog
      .AllowMultiSelect = False
            
      .Title = "Please select one or more files"

      .Filters.Clear
      .Filters.Add "Text files", "*.txt"
      .Filters.Add "All Files", "*.*"        
      
    If .Show = True Then
        
         For Each varFile In .SelectedItems
         
            MyD = varFile
         Next
         
    Dim n As String
    n = InStrRev(MyD, "\")
    FileName = Mid(MyD, n + 1)
    FilePath = Mid(MyD, 1, n)
            MyG = FileName
            MyG = strreplace(MyG)
         
                  
   Dim s$, h%
    s = "[" & FileName & "]" & vbCrLf & _
        "ColNameHeader=True" & vbCrLf & _
        "Format=TabDelimited" & vbCrLf & _
        "Col1=OPERATIONDATE char" & vbCrLf & _
        "Col2=OPERATION_TIME Char" & vbCrLf & _
        "Col3=BRANCH_NAME Char" & vbCrLf & _
        "Col4=BRANCH_CODE LongChar" & vbCrLf & _
        "Col5=AMOUNT_OPERATION Double" & vbCrLf & _
        "Col6=CURRENCY Char" & vbCrLf & _
        "Col7=DEBIT_ACCOUNT LongChar" & vbCrLf & _
        "Col8=DEBIT_ACCOUNT_OWNER_NAME LongChar" & vbCrLf & _
        "Col9=DEBIT_ACCOUNT_OWNER_ID LongChar" & vbCrLf & _
        "Col10=DEBIT_ACCOUNT_OWNER_STATUS Char" & vbCrLf & _
        "Col11=CREDIT_ACCOUNT LongChar" & vbCrLf & _
        "Col12=CREDIT_ACCOUNT_OWNER_NAME LongChar" & vbCrLf & _
        "Col13=CREDIT_ACCOUNT_OWNER_ID LongChar" & vbCrLf & _
        "Col14=CREDIT_ACCOUNT_OWNER_STATUS Char" & vbCrLf & _
        "Col15=EXPLANATION LongChar" & vbCrLf & _
        "Col16=BANK LongChar" & vbCrLf & _
        "Col17=ENTER_USER LongChar" & vbCrLf & _
        "Col18=APPROVE_USER LongChar" & vbCrLf & _
        "Col19=PRODUCT_NAME LongChar" & vbCrLf & _
        "Col20=NoName Char" & vbCrLf & _
        "CharacterSet=28595"
    h = FreeFile: Open "schema.ini" For Output As h
    Print #h, s
    Close h
 
    CurrentDb.Execute "INSERT Into Operations(OPERATIONDATE, OPERATION_TIME, BRANCH_NAME,BRANCH_CODE, 
AMOUNT_OPERATION,[CURRENCY], DEBIT_ACCOUNT, DEBIT_ACCOUNT_OWNER_NAME, DEBIT_ACCOUNT_OWNER_ID, DEBIT_ACCOUNT_OWNER_STATUS,
 CREDIT_ACCOUNT, CREDIT_ACCOUNT_OWNER_NAME, CREDIT_ACCOUNT_OWNER_ID,
 CREDIT_ACCOUNT_OWNER_STATUS, EXPLANATION, BANK, ENTER_USER, APPROVE_USER, PRODUCT_NAME) 
SELECT (DateValue(Format([OPERATIONDATE],'0000\.00\.00'))), OPERATION_TIME, BRANCH_NAME,BRANCH_CODE,
 AMOUNT_OPERATION,[CURRENCY], DEBIT_ACCOUNT, DEBIT_ACCOUNT_OWNER_NAME, DEBIT_ACCOUNT_OWNER_ID,
 DEBIT_ACCOUNT_OWNER_STATUS, CREDIT_ACCOUNT, CREDIT_ACCOUNT_OWNER_NAME, CREDIT_ACCOUNT_OWNER_ID,
 CREDIT_ACCOUNT_OWNER_STATUS, EXPLANATION, BANK, ENTER_USER, APPROVE_USER,
 PRODUCT_NAME FROM " & MyG & " IN '" & FilePath & "'[Text;format=TabDelimeted;HDR=Yes;CharacterSet=28595];"
        MyT.Requery
 
    Else
         MsgBox "You clicked Cancel in the file dialog box."
    End If
   End With
   
End With
MyT.Close
Set MyT = Nothing
    [Forms]![Sum Form]![Form1-operations].Requery



Exit_Command5_Click:
    Exit Sub
Err_Command5_Click:
    MsgBox Err.DESCRIPTION
    Resume Exit_Command5_Click
    Call Insert_Into
End Sub

Последний раз редактировалось Emmelman; 15.03.2013 в 17:41.
Emmelman вне форума Ответить с цитированием
Старый 15.03.2013, 19:02   #6
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Во всё пока на вникал, но вот, например, на строку Call Insert_Into программа не попадёт никогда:
Код:
Exit_Command5_Click:
    Exit Sub
Err_Command5_Click:
    MsgBox Err.DESCRIPTION
    Resume Exit_Command5_Click
    Call Insert_Into
End Sub
Поле AMOUNT_OPERATION - это сумма? Вообще, должен быть по идее денежный тип. Проверьте типы данных полей во входной таблице, возможно, что-то по типу не влезает и не конвертируется...
Андрэич вне форума Ответить с цитированием
Старый 16.03.2013, 16:39   #7
alvk
Форумчанин
 
Регистрация: 22.05.2012
Сообщений: 136
По умолчанию

Emmelman, сурово..
alvk вне форума Ответить с цитированием
Старый 18.03.2013, 09:05   #8
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

упс, с Call Insert_into я тупаанул конечно xD
ща посмотрю,что там с типами файлов, пока шел на работу,подумал,может не работает из-за формата базы, она у меня сейчас в accdb, попробую поменять.

alvk, сурово,да( но выгружать из файла нужно, если не получится исправить, придется другой метод пробовать, что-то вроде TransferText, может быть..
Emmelman вне форума Ответить с цитированием
Старый 19.03.2013, 02:36   #9
alvk
Форумчанин
 
Регистрация: 22.05.2012
Сообщений: 136
По умолчанию

Код:
MyG = strreplace(MyG)
Что это за функция?
alvk вне форума Ответить с цитированием
Старый 19.03.2013, 09:08   #10
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

она заменяет "." на "#" -заменяет в имени файла, ибо чтобы работало, нужен этот вот октоторп)
Emmelman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректная кодировка asale HTML и CSS 0 05.10.2010 10:46
Некорректная загрузка формы из файла Serega123 Общие вопросы Delphi 6 14.04.2010 16:10
Загрузка - Выгрузка структуры из dat файла delphinewerklin Общие вопросы Delphi 4 07.02.2010 20:00
Выгрузка doc файла в комбокс и листбокс Артур Иваныч Microsoft Office Excel 6 27.11.2009 19:58
Некорректная печать Natalie Microsoft Office Word 5 29.08.2008 11:08