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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задолбало! Type mismatch :(, Если я это не сделаю, сделаю ХАРАКИРИ 
:(
    Опции темы
neutrino
Дата 27.7.2004, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Приветствую!

Я пишу фотоальбом в ASP на VBscript. Почти закончил - осталось сделать закачку фотографий на сервер. Для этих целей сделал вот такой скрипт:
Код

....
html code
....

<%

set o = new clsUpload

if o.Exists("cmdSubmit") then
'get client file name without path
'sFileSplit = split(o.FileNameOf("txtFile"), "\")
'sFile = sFileSplit(Ubound(sFileSplit))

o.FileInputName = "txtFile"

Set Conn = Server.CreateObject("ADODB.Connection")

With Conn
 .Provider = "Microsoft.Jet.OLEDB.4.0"
 .ConnectionString = "Data Source=" & Server.MapPath ("..\data.mdb")
 .Open()
End With

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT * from Photos", Conn, 1, 3

Rs.AddNew
FileIdx = Rs("phID") 'Autonumber
o.FileFullPath = Server.MapPath("..") & "\photos\" & FileIdx & ".jpg" 'sFile
o.save

if o.Error = "" then
 'File uploaded successfully, add database record:
 Rs("phName") = o.ValueOf("PhotoNameEdit")
 Rs("phDescription") = o.ValueOf("PhotoDescEdit")
 Rs("phTopic") = cat_id
 Rs("phDate") = "#" & o.ValueOf("PhotoDateEdit") & "#"
 Rs.Update
 
 response.write "Success. File saved to  " & o.FileFullPath & "<br>"
 response.write "Photo Name=" & o.ValueOf("PhotoNameEdit") & "<br>"
 response.write "Photo Description=" & o.ValueOf("PhotoDescEdit") & "<br>"
 response.write "Photo Date=" & o.ValueOf("PhotoDateEdit") & "<br>"
else
 Rs.Close
 Rs.Open "SELECT * from Photos WHERE (phID=" & FileIdx & ")", Conn, 1, 3
 if not rs.EOF then Rs.Delete
 Rs.Close
 response.write "Failed due to the following error: " & o.Error
end if
set Rs = nothing
end if
set o = nothing
%>

clsUpload - класс для закачки, написанный на VB. Закачка фоток работает отлично. Но запись в базе данных не обновляется. Все время пишет ошибку в строках:
Код

 Rs("phName") = o.ValueOf("PhotoNameEdit")
 Rs("phDescription") = o.ValueOf("PhotoDescEdit")
 Rs("phTopic") = cat_id
 Rs("phDate") = "#" & o.ValueOf("PhotoDateEdit") & "#"
 Rs.Update


[/quote]
Microsoft VBScript runtime error '800a000d'

Type mismatch: 'rs'

/webtech/neutrino/database/forms/uploadphoto.asp, line 135

[quote]

В чем может быть дело?

Спасибо!


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 27.7.2004, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Извините, писал в порыве гнева и забыл про несколько аспектов:
База данных - MS ACCESS
Метод o.ValueOf() - возвращает содержимое некоторых полей. Т.е. тип - строка.

Я пытался просто присвоить:
RS("phName") = "test"
Тоже не работает, хоть и в БД тип поля - Text.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
cardinal
Дата 27.7.2004, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Попробуй написать
Код
RS!phName = "test"

или сделать что-нибудь по типа
Код
Rs("phName") = CStr(o.ValueOf("PhotoNameEdit"))

Ни в чем что написал не уверен, но гляди поможет. Еще посмотри здесь:
http://forum.vingrad.ru/index.php?showtopic=22447
http://forum.vingrad.ru/index.php?showtopic=6018
http://forum.vingrad.ru/index.php?showtopic=20694
adv/hello.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
neutrino
Дата 27.7.2004, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Ни первый, ни второй вариант не прошел.
Вот посмотри: http://brd92.ort.org.il/webtech/neutrino/d...ername=neutrino
Нажми на любую категорию и попробуй добавить картинку.

Спасибо!
Добавлено @ 20:56
Если тебе поможет могу кинуть в приват мой логин на сервер. Если надо будет посмотреть сами скрипты.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
cardinal
Дата 28.7.2004, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Попробовал и ничего не получилось smile.gif

Спроси в разделе VB лучше, гляди чего подскажут.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
boevik
Дата 28.7.2004, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



neutrino, какая строка это 135?

И в качестве улучшения кода (tip):
Замени SQL "SELECT * from Photos" на "SELECT * from Photos WHERE 1=2"
а то когда таблица разрастется, твой select будет подтормаживать.



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
neutrino
Дата 28.7.2004, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(boevik @ 28.7.2004, 08:51)
neutrino, какая строка это 135?

Код
135: Rs("phName") = o.ValueOf("PhotoNameEdit")
136: Rs("phDescription") = o.ValueOf("PhotoDescEdit")
137: Rs("phTopic") = cat_id
138: Rs("phDate") = "#" & o.ValueOf("PhotoDateEdit") & "#"
139: Rs.Update

Неважно, на простое присваивание Rs("phDescription")="траляля", точно так же ругается.
Добавлено @ 12:11
Цитата

И в качестве улучшения кода (tip):
Замени SQL "SELECT * from Photos" на "SELECT * from Photos WHERE 1=2"
а то когда таблица разрастется, твой select будет подтормаживать.


Не понял ... Это же всегда будет FALSE ...


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
boevik
Дата 28.7.2004, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



Непонятки какие то с твоим кодом, вроде всё написано правильно.
Единственное могу предложить поменять на Conn.Execute "INSERT INTO ...."

Цитата
Не понял ... Это же всегда будет FALSE ...

Вот именно. Для чего ты делаешь select?
На сколько я вижу только для того что б добавить новую запись.
Что произойдет при твоём selecte?
Вся таблица скопируется в рекордсет. Если таблица большая то это займет время.
А теперь подумай, нужна ли тебе таблица в рекордсете.

При моем запросе (условие всегда не верно) в рекордсет не зайдет ни единой записи, но при этом рекордсет получит всю информацию о строении таблицы. То что нам и надо.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
neutrino
Дата 28.7.2004, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата

Вот именно. Для чего ты делаешь select?
На сколько я вижу только для того что б добавить новую запись.
Что произойдет при твоём selecte?
Вся таблица скопируется в рекордсет. Если таблица большая то это займет время.
А теперь подумай, нужна ли тебе таблица в рекордсете.


Спасибо, что-то я сам не догнал.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 28.7.2004, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Проблема в том, что у меня первое поле - autonumber. Я его использую как имя для файла, который закачивается поэтому я сначала добавляю запись, потом считываю это поле и сщхраняю файл под таким именем. Если будет запрос "INSERT ...", то я не смогу узнать этот авто-номер.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 29.7.2004, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



ХЕРНЯ ЭТО ;%:*:%? ПРОГРАММИРОВАНИЕ БАЗ ДАННЫХ :?:* МАТЬ ИХ!!!!

Я уже все попробовал. Ничего не идет. Последнее, что сделал:
Код

set o = new clsUpload

if o.Exists("cmdSubmit") then
o.FileInputName = "txtFile"

Set Conn = Server.CreateObject("ADODB.Connection")

With Conn
 .Provider = "Microsoft.Jet.OLEDB.4.0"
 .ConnectionString = "Data Source=" & Server.MapPath ("..\data.mdb")
 .Open()
End With

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT * from Photos WHERE 2=1", Conn, 1, 3

Здесь я получаю этот номер и закрываю рекордсет. Это работает, я проверил - в базу добавляется новая пустая запись только с авто-номером.
'Gen an autonumber
Rs.AddNew 'Add blank record
FileIdx = Rs("phID") 'Get new Autonumber
Rs.Update
Rs.Close

o.FileFullPath = Server.MapPath("..") & "\photos\" & FileIdx & ".jpg" 'sFile
'o.save

if o.Error = "" then
 'File uploaded successfully, add database record:
 SqlUpdate = "UPDATE Photos SET " & _
  "Photos.phName = """ & o.ValueOf("PhotoNameEdit") & """, " & _
  "Photos.phDescription = """ & o.ValueOf("PhotoDescEdit") & """, " & _
  "Photos.phTopic = " & cat_id & ", " & _
  "Photos.phDate = """ & o.ValueOf("PhotoDateEdit") & """ " & _
  "WHERE (Photos.phID=" & FileIdx & ")"
 response.Write SqlUpdate & "<br>"
 Conn.Execute SqlUpdate ' LINE 146 is HERE !!!!!!!
else
 response.write "Failed due to the following error: " & o.Error
end if
set Rs = nothing
set Conn = nothing
end if
set o = nothing


И что вы думаете? Это мне вывело такую ошибку (я уже видел по моему их всех):
Цитата

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.

/webtech/neutrino/database/forms/uploadphoto.asp, line 146


Такое ощущение, что глючит галимый движок БД.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
boevik
Дата 29.7.2004, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



neutrino, давай начнем разбираться.
1. Покажи структуру таблицы
2. Приведи содержание переменой SqlUpdate
3. Обычно для стрингов использую одну кавычку (апостроф " ' ")



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
neutrino
Дата 29.7.2004, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



ОК.
1.
Таблица Photos:
Цитата

Field name      | Field type
------------------------------------
phID              | Autonumber
phName          | Text
phDescription |  Memo
phTopic          | Number
phDate          | Date/Time

2.
Результат команды response.Write SqlUpdate & "<br>"
Код

UPDATE Photos SET Photos.phName = "ass", Photos.phDescription = "ass ddd", Photos.phTopic = 2, Photos.phDate = "2.3.2001" WHERE (Photos.phID=48)


3. По правилам SQL неважно апостроф или двойные кавычки, но после всего и это проверю.



--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
boevik
Дата 1.8.2004, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



neutrino, из всего что я вижу мне не нравится формат даты.
Попробуй поставить дату в формате mm/dd/yyyy и объзательно между решетками (знак #).
Код
UPDATE Photos SET Photos.phName = "ass", Photos.phDescription = "ass ddd", Photos.phTopic = 2, Photos.phDate = #3/2/2001# WHERE (Photos.phID=48)




--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
neutrino
Дата 1.8.2004, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Да, но он выводит, что ошибка в условии:
Цитата

Data type mismatch in criteria expression.


Да и решетки я пробовал ... вот только вместо слэшей точки были. Попробую твой вариант.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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