Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка v запросе 
:(
    Опции темы
alexIrish
Дата 2.10.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 26.1.2006
Где: Ireland, Dublin

Репутация: нет
Всего: нет



здравсвуйтe всем.
Tребую поздравлений, у меня родилась дочка smile 

A теперь по теме.
Вот етот модуль работаеt без проблем и выводит список файлоv с ФТП сервера
(фaйлы: "100118consigstk.csv","C0424358.txt","FP000101.txt"...)
Код

Public Sub ListFiles(List1 As Control, hSession As Long)
Dim hFile As Long ' This is a file handle
Dim fd As WIN32_FIND_DATA
hFile = FtpFindFirstFile(hSession, "*.*", fd, 0, 0)
If hFile = 0 Then
  If Err.LastDllError = 18 Then
    MsgBox "No files found"
    Exit Sub
  Else
    MsgBox "Some error occurred" & Err.Description
    Exit Sub
  End If
End If
Do
  List1.AddItem fd.cFileName
Loop While InternetFindNextFile(hFile, fd) <> 0
'Close the file handle
  Call InternetCloseHandle(hFile)
End Sub


А етот выдает ошибку: "Syntax error in string in query expression '100118consigstk.csv'
Код

'Write all file's names into table
Public Sub FileNamesTable(hSession As Long)
Dim strSQL As String
Dim hFile As Long
Dim fd As WIN32_FIND_DATA
hFile = FtpFindFirstFile(hSession, "*.*", fd, 0, 0)
If hFile = 0 Then
  If Err.LastDllError = 18 Then
    MsgBox "No files found"
    Exit Sub
  Else
    MsgBox "Some error occurred" & Err.Description
    Exit Sub
  End If
End If
strSQL = "INSERT INTO FileListTemp(FileName) Values (""" & fd.cFileName & """);"
Debug.Print strSQL
Do
  DoCmd.RunSQL strSQL
Loop While InternetFindNextFile(hFile, fd) <> 0
Call InternetCloseHandle(hFile)
End Sub

Pробовал писАть так:
Код

strSQL = "INSERT INTO FileListTemp(FileName) Values ('"& fd.cFileName & "');"

Vse равно нe работaет.

Окно Immediate vыдает вот такую фигню:
Цитата

INSERT INTO FileListTemp(FileName) Values ("100118consigstk.csv                                                                                                                                                                                                                                                 ");
INSERT INTO FileListTemp(FileName) Values ("100118consigstk.csv                                                                                                                                                                                                                                                 ");
INSERT INTO FileListTemp(FileName) Values ("100118consigstk.csv      202           189 Feb 08  2007 C6000649.txt
-rw-r-----    1 1400     202           189 Feb 08  2007 C7000649.txt
-rw-r-----    1 1400     202           189 Feb 08  2007 C8000649.txt
-rw-r-----    1 1400     202           197 Apr 04 ");
INSERT INTO FileListTemp(FileName) Values ("100118consigstk.csv csv
-rw-r-----    1 1400     202          4346 Jul 27  2005 BOM.txt
-rw-r-----    1 1400     202           209 Jul 08  2005 C0424358.txt
-rw-r-----    1 1400     202           189 Feb 08  2007 C6000649.txt
-rw-r-----    1 1400     202  ");


Sоответственно несколько вызовов модуля.
Помогите найти гдe лажа. smile 
PM MAIL   Вверх
Akina
Дата 2.10.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(alexIrish @  2.10.2007,  12:49 Найти цитируемый пост)
Sоответственно несколько вызовов модуля.
Помогите найти гдe лажа

Где-то за пределами этого кода.

Смотрите стек вызовов.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
alexIrish
Дата 2.10.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 26.1.2006
Где: Ireland, Dublin

Репутация: нет
Всего: нет



А как его смотреть в ВБА? smile 

Dа и если вместо 
Код
Docmd.RunSQL strSQL 
 поставить в цыкл
Код

msgbox fd.cFileName

Tо v окнe сообщенияблагополучно выводятся имена файлоv один за другим и до последнего smile 

Это сообщение отредактировал(а) alexIrish - 2.10.2007, 15:05
PM MAIL   Вверх
Akina
Дата 2.10.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(alexIrish @  2.10.2007,  15:25 Найти цитируемый пост)
Dа и если вместо 
[skipped] 
поставить в цыкл
[skipped] 
Tо v окнe сообщенияблагополучно выводятся имена файлоv один за другим и до последнего 

Ну еще бы! fd.cFileName меняется в процессе перехода по записям, а строка как была присвоена ПЕРЕД циклом, так неизменной и остается.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
alexIrish
Дата 2.10.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 26.1.2006
Где: Ireland, Dublin

Репутация: нет
Всего: нет



Тут нe в цыклe дело.
Вопрос почему в 
Код
 msgbox fd.cFileName  
 передается нормальное Имя файла,
а v строку запроса - то с кучей пробелов , то с атрибутами. 
По идее если лажа с вызовом, то она должна быть везде?
И в список все имена передаются правильно. И техтовой переменной присваиваются.
Я переделал цыкл так:
Код

Do
str = fd.cFileName
Debug.Print str
strSQL = "INSERT INTO FileListTemp(FileName) Values ('" & str & "');"
Debug.Print strSQL
DoCmd.RunSQL strSQL
Loop While InternetFindNextFile(hFile, fd) <> 0


та же ошибка, и воt что в Immediate:
Цитата

100118consigstk.csv                                                                                                                                                                                                                                                 
INSERT INTO FileListTemp(FileName) Values ('100118consigstk.csv                                                                                                                                                                                                                                                 ');


A kakaя разница нe пойму smile 
PM MAIL   Вверх
alexIrish
Дата 2.10.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 26.1.2006
Где: Ireland, Dublin

Репутация: нет
Всего: нет



Сделал так:
Код

On Error GoTo Loop_err
Do
str = Left(fd.cFileName, 20)
Debug.Print str
strSQL = "INSERT INTO FileListTemp(FileName) Values ('" & str & "');"
Debug.Print strSQL
CurrentDb.Execute strSQL
Loop While InternetFindNextFile(hFile, fd) <> 0
Call InternetCloseHandle(hFile)
Loop_err: MsgBox Err.Number, , Err.Description: Exit Sub
End Sub


Immediate:
Цитата

100118consigstk.csv 
INSERT INTO FileListTemp(FileName) Values ('100118consigstk.csv ');

Vродe нормально , но после первого раунда тожe сообщение об ошибке ( номер 3075 кстати) smile 
PM MAIL   Вверх
Akina
Дата 2.10.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Не вижу никаких гарантий, что стоящий после имени файла символ, выглядящий пробелом, на самом деле является таковым.
Цитата(alexIrish @  2.10.2007,  17:20 Найти цитируемый пост)
номер 3075 кстати

Syntax Error
Кстати, структурка у FileListTemp какая?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
alexIrish
Дата 2.10.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 26.1.2006
Где: Ireland, Dublin

Репутация: нет
Всего: нет



таблица FileNameTemp (3 fields)
No                AutoNumber      Pr.Key
FileName      Text (50)           Indexed(no duplicates)
Date             Shot Date         Date() by default.

PM MAIL   Вверх
alexIrish
Дата 3.10.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 26.1.2006
Где: Ireland, Dublin

Репутация: нет
Всего: нет



Ну что господа, соображения есть?
Pока сделал так: 
Создаю невидимый listbox i заполаняю его именами файлов а из него цыклом в таблицу.
Но ведь ето нe выход. Хотелось бы узнать почему работает:
Код

Docmd.RunSQL "Insert into FileListTemp(FileName) Values ('" & ListBox1.Value &"');"


I не работает:
Код

str = fd.cFileName
strSQL = "INSERT INTO FileListTemp(FileName) Values ('" & str & "');"
Docmd.RunSQL strSQL


Это сообщение отредактировал(а) alexIrish - 3.10.2007, 10:05
PM MAIL   Вверх
Akina
Дата 3.10.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Akina @  2.10.2007,  17:26 Найти цитируемый пост)
Не вижу никаких гарантий, что стоящий после имени файла символ, выглядящий пробелом, на самом деле является таковым.

Проверил?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
alexIrish
Дата 3.10.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 26.1.2006
Где: Ireland, Dublin

Репутация: нет
Всего: нет



проверил - пробел.
Вопрос, почему в листбокс имена фаилов вставляются без всяких там пробелов и тд.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1011 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.