| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Задолбало! Type mismatch :( |
| Автор: neutrino 27.7.2004, 19:11 | ||||
| Приветствую! Я пишу фотоальбом в ASP на VBscript. Почти закончил - осталось сделать закачку фотографий на сервер. Для этих целей сделал вот такой скрипт:
clsUpload - класс для закачки, написанный на VB. Закачка фоток работает отлично. Но запись в базе данных не обновляется. Все время пишет ошибку в строках:
[/quote] Microsoft VBScript runtime error '800a000d' Type mismatch: 'rs' /webtech/neutrino/database/forms/uploadphoto.asp, line 135 [quote] В чем может быть дело? Спасибо! |
| Автор: neutrino 27.7.2004, 19:23 |
| Извините, писал в порыве гнева и забыл про несколько аспектов: База данных - MS ACCESS Метод o.ValueOf() - возвращает содержимое некоторых полей. Т.е. тип - строка. Я пытался просто присвоить: RS("phName") = "test" Тоже не работает, хоть и в БД тип поля - Text. |
| Автор: cardinal 27.7.2004, 19:37 | ||||
Попробуй написать
или сделать что-нибудь по типа
Ни в чем что написал не уверен, но гляди поможет. Еще посмотри здесь: http://forum.vingrad.ru/index.php?showtopic=22447 http://forum.vingrad.ru/index.php?showtopic=6018 http://forum.vingrad.ru/index.php?showtopic=20694 |
| Автор: neutrino 27.7.2004, 20:51 |
| Ни первый, ни второй вариант не прошел. Вот посмотри: http://brd92.ort.org.il/webtech/neutrino/database/index.asp?username=neutrino Нажми на любую категорию и попробуй добавить картинку. Спасибо! Добавлено @ 20:56 Если тебе поможет могу кинуть в приват мой логин на сервер. Если надо будет посмотреть сами скрипты. |
| Автор: cardinal 28.7.2004, 08:51 |
| Попробовал и ничего не получилось Спроси в разделе VB лучше, гляди чего подскажут. |
| Автор: boevik 28.7.2004, 09:51 |
| neutrino, какая строка это 135? И в качестве улучшения кода (tip): Замени SQL "SELECT * from Photos" на "SELECT * from Photos WHERE 1=2" а то когда таблица разрастется, твой select будет подтормаживать. |
| Автор: neutrino 28.7.2004, 12:09 | ||||||
Неважно, на простое присваивание Rs("phDescription")="траляля", точно так же ругается. Добавлено @ 12:11
Не понял ... Это же всегда будет FALSE ... |
| Автор: boevik 28.7.2004, 13:30 | ||
| Непонятки какие то с твоим кодом, вроде всё написано правильно. Единственное могу предложить поменять на Conn.Execute "INSERT INTO ...."
Вот именно. Для чего ты делаешь select? На сколько я вижу только для того что б добавить новую запись. Что произойдет при твоём selecte? Вся таблица скопируется в рекордсет. Если таблица большая то это займет время. А теперь подумай, нужна ли тебе таблица в рекордсете. При моем запросе (условие всегда не верно) в рекордсет не зайдет ни единой записи, но при этом рекордсет получит всю информацию о строении таблицы. То что нам и надо. |
| Автор: neutrino 28.7.2004, 18:44 | ||
Спасибо, что-то я сам не догнал. |
| Автор: neutrino 28.7.2004, 19:43 |
| Проблема в том, что у меня первое поле - autonumber. Я его использую как имя для файла, который закачивается поэтому я сначала добавляю запись, потом считываю это поле и сщхраняю файл под таким именем. Если будет запрос "INSERT ...", то я не смогу узнать этот авто-номер. |
| Автор: neutrino 29.7.2004, 00:22 | ||||
| ХЕРНЯ ЭТО ;%:*:%? ПРОГРАММИРОВАНИЕ БАЗ ДАННЫХ :?:* МАТЬ ИХ!!!! Я уже все попробовал. Ничего не идет. Последнее, что сделал:
И что вы думаете? Это мне вывело такую ошибку (я уже видел по моему их всех):
Такое ощущение, что глючит галимый движок БД. |
| Автор: boevik 29.7.2004, 07:57 |
| neutrino, давай начнем разбираться. 1. Покажи структуру таблицы 2. Приведи содержание переменой SqlUpdate 3. Обычно для стрингов использую одну кавычку (апостроф " ' ") |
| Автор: neutrino 29.7.2004, 21:06 | ||||
| ОК. 1. Таблица Photos:
2. Результат команды response.Write SqlUpdate & "<br>"
3. По правилам SQL неважно апостроф или двойные кавычки, но после всего и это проверю. |
| Автор: boevik 1.8.2004, 07:50 | ||
| neutrino, из всего что я вижу мне не нравится формат даты. Попробуй поставить дату в формате mm/dd/yyyy и объзательно между решетками (знак #).
|
| Автор: neutrino 1.8.2004, 10:52 | ||
Да, но он выводит, что ошибка в условии:
Да и решетки я пробовал ... вот только вместо слэшей точки были. Попробую твой вариант. |
| Автор: neutrino 1.8.2004, 11:07 |
| boevik Емае! Вот это гон!!! Все работает Премного благодарен. Спасибо!!!! |
| Автор: boevik 1.8.2004, 11:10 | ||
Видел, видел. Но в чем у него проблема понять не могу. А напрямую в Аксесе этот SQL проходит? |
| Автор: neutrino 1.8.2004, 11:19 |
| Да, у меня проходил с решетками, но вместо слэшей - точки. |
| Автор: cardinal 1.8.2004, 21:57 |
| neutrino, видишь, я же знал, что тебе здесь помогут. |
| Автор: arilou 2.8.2004, 21:16 | ||||
Привет, Почитал ветку форума, и вот, что мне это навеяло. Твой код не будет работать в том случае, если на сервере указан другой формат даты. Поэтому, предлагаю использовать параметрические запросы, типа
А параметры передавать через Command.Parameters Вот. |
| Автор: neutrino 2.8.2004, 22:00 |
| arilou Спасибо. Ну это в следуюшей версии. cardinal Спасибо! |
| Автор: cardinal 2.8.2004, 23:53 |
| Не за что! |
| Автор: boevik 3.8.2004, 07:21 | ||
Неверно. При использовании SQL statment нет зависимости от формата даты сервера. Дату надо указывать всегда в американском формате mm/dd/yyyy При использовании Command.Parameters дата должна подаваться в формате компа на котором создается Command.Parameters. |
| Автор: arilou 3.8.2004, 12:03 | ||||
Не согласен. Не один раз встречал проблему с датой в Access. Даже при указывании оной в американском формате, при запуске не других машинах не работает. Что касается Command.Parameters, дату надо передавать не строкой, а объектом типа Date, соответственно, не важно, в каком она формате. Для избежания проблем с спец. символами и форматами даты и следует использовать Command.Parameters. |