Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
VB6. Нужно пропарсить масив строк. Строки состоят из набора данных, разделенных "табом". Потом добавить все эти данные в базу (mdb). Позиции данных и поля в таблице соответствуют (по номеру). В таблице форматы полей соответствуют. Данные считываю в массив и, через рекордсет (DAO) заношу в таблицу БД. Но проблема вот в чем : даты и числа могут иметь разные форматы. Например : дата 01.02.2010, 01.02.10; число 56.55, 56,55, -56,55 -56.55. Так вот, надо проверить все элементы масива и, если данный элемент не соответствует типу в таблице, преобразовать его в этот тип. Вот пример: Код Название Дата Цена Наценка --------------------------------------------------------------------------------------- 12833 Актиферрин сироп фл. 100 мл 27.01.2010 28,98 8,94 12608 Бисептол сусп. фл. 80 мл 05.03.10 19.00 -3,22 --------------------------------------------------------------------------------------- Повлиять на однородность соответствующих данных в файле не возможно. Количество записей не очень большое. Прошу помочь написать функцию проверки. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 10:58 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Для чисел необходимо перед преобразованием провести замену точки и запятой на текущий разделитель. Дата распознается в обоих форматах. Что конкретно вызывает затруднения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 11:20 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, С точкой - это понятно, надо привести. Но обрабатываю данные в цикле и для замены запятой на точку, мне надо знать,что я обрабатываю сумму, а не, допустим, "название"(пример). С датой тоже проблем не будет. Суть проблемы - определить: строка,дата или число. Дальше я умею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 11:37 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
суть вопроса: как определить тип поля DAO-рекордсета? так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 11:41 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Код: plaintext константы найдете в хелпе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 11:48 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Не совсем. Вот пример кода: Dim Lines As Variant, v As Variant, i As Long, j As Long Open strPath For Input As #filenum: Lines = Input(LOF(1), 1): Close #filenum Lines = Split(Lines, vbCrLf) Set rstInvDet = dbs.OpenRecordset("InvoiceDet") For j = 3 To UBound(Lines) If Len(Lines(j)) > 0 Then v = Split(Lines(j), vbTab) 'Преобразуем строку в массив элементов rstInvDet.AddNew For i = 0 To UBound(v) If Len(v(i)) > 0 Then rstInvDet.Fields(i) = v(i) Next rstInvDet.Update End If Next j При таком методе я должен знать тип данныч v(i) , чтобы вставить в поле таблицы. Тип я смогу преобразовать. но при замене запятой на точку мне надо знать , что это не "название" а "сумма". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 11:50 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Надо определить не тип поля рекордсета, а тип данных, для коректной обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 11:52 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Например: rstInvDet.AddNew For i = 0 To UBound(v) If Len(v(i)) > 0 Then If (v(i)) Число Then rstInvDet.Fields(i) = Преобразовать в Double(v(i)) Else rstInvDet.Fields(i) = v(i) End If Next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 11:58 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
P_bogdanНадо определить не тип поля рекордсета, а тип данных, для коректной обработки. вы себе противоречите: P_bogdanПозиции данных и поля в таблице соответствуют (по номеру). . В таблице форматы полей соответствуют. то есть если есть соответствие - кто мешает смотреть по рекордсету. Но если вам хочется так - см. функции IsDate и IsNumeric P.S. используйте тэги для оформления кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 12:03 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Я наверно не очень внятно все объяснил. Прошу прощения. Попробую еще раз. Мне нужна функция, что то типа такой: автор funType(v(i))' Функция, которая определяет тип данных. Select Case funType Case "Строка" Что-то делаем со строкой Case "Число" Что-то делаем с числом Case "Дата" Что то делаем с датой End Select ?isnumeric("-20.022010") False ?isnumeric("-20,022010") True А я не знаю какой будет разделитель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 12:14 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
P_bogdanА я не знаю какой будет разделитель. так вы сделайте замену разделителя ДО проверки функцией IsNumeric P.S. Используйте правильные тэги (SRC) для кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 12:20 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Да, но если я сделаю замену до проверки, то поменяются запятые и в строке(если они там будут). P.S. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 12:23 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
P_bogdanДа, но если я сделаю замену до проверки, то поменяются запятые и в строке(если они там будут). И что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 12:49 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Ну , некрасиво будет: вместо Анальгин, табл. -> Анальгин.табл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 12:54 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
P_bogdanНу , некрасиво будет: вместо Анальгин, табл. -> Анальгин.табл. ???? Консультации консультациями, но свой-то мозг не отключайте! Я не предлагал вам делать замены в конечных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 12:58 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Спасибо за консультации. Кое-что почерпнул полезное (после более внимательного чтения Ваших сообщений). Попробую использовать. Еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 13:01 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
P_bogdan Цена Наценка P_bogdanIf (v(i)) Число Then rstInvDet.Fields(i) = Преобразовать в Double (v(i)) Дружеский совет - не используйте неточные типы данных для денег. Для этого есть точные типы данных, например "денежный". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 13:01 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Спасибо. Я знаю. Сейчас вношу изменения в БД и код для использования Currency. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 13:10 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Что-то получилось . Сейчас тестирую. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Использовал функцию от Гетца,Джилберта. Пока работа с несколькими файлами данных нормальная, без ошибок. Дальше буду проверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 15:55 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Он, может, и уважаемый человек, но меня такой результат не устроил бы Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 16:59 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Да, ошибочка :-(. Я уже заметил. Тут проверка по первому знаку. Надо попробовать проверить всю переменную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 17:15 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
P_bogdanДа, ошибочка :-(. Я уже заметил. Тут проверка по первому знаку. Надо попробовать проверить всю переменную. Ага. Проверить нецифровые знаки. Пересчитать точки с запятыми. Проверить правильность позиции минуса. Чем не устраивает IsNumeric? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 17:30 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, ?isnumeric("45,5") True ?isnumeric("45.5") False ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 17:51 |
|
||
|
Селектор типов данных
|
|||
|---|---|---|---|
|
#18+
P_bogdanС точкой - это понятно, надо привести. Но обрабатываю данные в цикле и для замены запятой на точку, мне надо знать,что я обрабатываю сумму, а не, допустим, "название"(пример). С датой тоже проблем не будет. Суть проблемы - определить: строка,дата или число. Дальше я умею. А какая вообще проблема? Как я понимаю все поля строки разделены таб-ами. Так что вы вначале разбиваете строку на поля, а потом уже в конкретном поле и делаете подстановку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2010, 17:56 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=60&tid=2159913]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 175ms |

| 0 / 0 |
