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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2013, 13:43   #11
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

да как раз по этой статье вышеописанную процедуру и сделал) Хаха, да не год, месяц,наверное. Просто была задача - сделать импорт из файла, я ее сделал. Теперь вдруг айтишников нельзя попросить сделать нормальную выгрузку,чтобы дата корректная была, и просят,чтобы программа сама делала
Emmelman вне форума Ответить с цитированием
Старый 05.02.2013, 13:52   #12
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

А, там ещё Акс может без спецификации не сдюжить, в случае если полей много, a файл объёмный, разделитель нестандартный (да ещё датные поля, которые надо преобразовывать!)... Но при правильном коде всё равно будет понятно, что он заработал. Сначала обкатайте запрос через конструктор, только после того, как заработает, его можно в VBA приживать...
Андрэич вне форума Ответить с цитированием
Старый 05.02.2013, 13:55   #13
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

попробую сейчас поковыряться, там всего одно датное поле из 20-ти и оно первое!)

Последний раз редактировалось Emmelman; 05.02.2013 в 13:59.
Emmelman вне форума Ответить с цитированием
Старый 05.02.2013, 14:06   #14
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Цитата:
Сообщение от Emmelman Посмотреть сообщение
айтишников нельзя попросить сделать нормальную выгрузку,чтобы дата корректная была, и просят, чтобы программа сама делала
Понял, сразу надо конкретно выкладывать, где запущено
А там теперь уже несложно, потому что теперь всё ясно и наглядно. Когда надо? (Сегодня поколдую, к вечеру, скорей всего...)
Ты, это, скажи этим господам, что, мол, договорился: программа всё сделает сама, как и просили. А с них, за телепатию и цифровое чревовещание - ... ну они и сами всё знают
Андрэич вне форума Ответить с цитированием
Старый 05.02.2013, 14:19   #15
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Ух ты, чють не компьютер не сломали
Поле-то текстовое, и будет несовпадение типов. Так надо:
Код:
format(datevalue(format(OPERATIONDATE,"0000\.00\.00")))
(Название спецификации - имя файла)
............................
Андрэич вне форума Ответить с цитированием
Старый 05.02.2013, 14:35   #16
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

как-то вот так составил запрос
Код:
insert into Operations  (OPERATIONDATE, BRANCH_NAME, BRANCH_NAME,AMOUNT_OPERATION,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 format(datevalue(format(OPERATIONDATE,"0000\.00\.00"))), BRANCH_NAME, BRANCH_NAME,
AMOUNT_OPERATION, 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 [FX_Transfer_staff20121203#txt] IN 'C:\Documents and Settings\u1226430\My Documents\Education docs\Базы данных\' [Text;DSN=schema.ini;IMEX=2;HDR=Yes]
Не пойму почему ругается на поле CURRENCY, если оно есть -то выскакивает ошибка INSERT INTO Syntax error, без данного поля продолжает работать, но выскакивает ошибка в конце,вот здесь-
Код:
[Text;DSN=schema.ini;IMEX=2;HDR=Yes]
, пишет,что не существует файла спецификации
Emmelman вне форума Ответить с цитированием
Старый 05.02.2013, 15:26   #17
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

запрос заработал( я два раза поле BRANCH_NAME указал - поэтому еще ошибка была и убрал из [Text;DSN=schema.ini;IMEX=2;HDR=Yes] DSN ), но почему-то поле CURRENCY не работает, прописал 20121223 в OPERATIONDATE и оно заменилось на 23.12.2012. Теперь надо в код вставить
Emmelman вне форума Ответить с цитированием
Старый 05.02.2013, 16:16   #18
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

Код:
CurrentDb.Execute "INSERT Into Operations SELECT (format(datevalue(format(OPERATIONDATE,"0000\.00\.00"))), BRANCH_NAME,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,NoName) FROM " & MyG & " IN '" & FilePath & "' 'text;'"
(format(datevalue(format(OPERATIOND ATE,"0000\.00\.00"))) - как эту строчку привести в должный вид, чтобы компилятор не ругался? Он ругается на 0000

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

Цитата:
Сообщение от Emmelman Посмотреть сообщение
чтобы компилятор не ругался
- чтобы никто не ругался - нужно отдыхать и набиратося сил: нас ждут великие дела...
Цитата:
Сообщение от Emmelman Посмотреть сообщение
почему ругается на поле CURRENCY, если оно есть -то выскакивает ошибка INSERT INTO Syntax error, без данного поля продолжает работать, но выскакивает ошибка
Потому что CURRENCYMONEY) - это зарезервированные в системе слова, используемые для описания
типов данных и которые нельзя использовать в качестве имён таблиц и полей (и других объектов).
А именно, если в поле предполагается хранить денежные величины, то и тип данных этого поля должен быть специально для того предназначенным - Денежным, а CURRENCY (или его синоним NUMERIC) как раз описывает тип данных такого поля.
Вдогонку, простые текстовые поля (max 255 символов), которые должны быть CHAR (TEXT) (и никак не DOUBLE, не говоря уже о других типах...), у тебя почему-то описаны с типом MEMO, и получается, что строчки в несколько букв ты уместил в объёме целой книги в 65000 символов.
(Ёщё подозреваю, что и поля с "...CODE" и "...ID" должны быть числовыми - LONG, но будем надеяться, запрос работать будет...)
Откуда взялось такое значение параметра кодировки (CharacterSet)? Первый раз такое вижу. А сам этот параметр почему оказался после описаний полей спецификации?

И самое главное: на кой, спрашивается, устраивать эти танцы с бубнами, программно наворачивать спецификацию импорта (которую и не каждый продвинутый юзер осилит), когда Аксесс прекрасно позволяет комфортно и быстро всё это соорудить без единой строчки говнокода. Причём, одним запросом (который ты как-то умудрился на ровном месте исковеркать, да так, что на того даже компилятор заругался ...). Не понял юмора...
Андрэич вне форума Ответить с цитированием
Старый 06.02.2013, 09:21   #20
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

Насчет CharacterSet - без этого параметра, все текстовые данные при импорте из файла.txt будут отображаться некорректно,точней ничего не будет понятно,билеберда полная.CharacterSet=28595 - означает преобразование в кириллицу ISO, для нормального отображения текстовых данных.

Про Currency - так и думал, что в этом проблема. Самое смешное, что, чтобы изменить название этого поля придется уговаривать ИТ его изменить, для этого им придется в ядре системы нашей организации что-то менять, думаю они вряд ли на такое пойдут, ради одной сторонней программы..)

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

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

А почему у меня в коде запрос не работает,ба, не пойму...буду еще смотреть
Emmelman вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приведение к 3 н.ф. базы данных leha_leha Помощь студентам 2 26.11.2012 22:50
приведение числовых данных к единому виду сантехник Microsoft Office Excel 42 20.09.2011 11:27
Приведение типов в Qt mike_tihomirov Qt и кроссплатформенное программирование С/С++ 1 19.06.2010 13:14
Необхоима подборка данных за определенный срок koma Общие вопросы Delphi 3 01.10.2009 14:08
Приведение к типу __Demon__ Общие вопросы C/C++ 1 27.09.2009 17:40