Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: запрос на деление Добавлено: 13.07.07 09:11  

Автор вопроса:  Илья
Здравствуйте!
Имеется запрос:

INSERT INTO Таблица2 ( Слово8 )
SELECT (Слово6)\(Слово7) AS Слово8
FROM Таблица2;

Запрос выполняется правильно. Но как только в знаменателе (поле Слово7) оказывается большее число чем в числителе (Слово6), запрос выполняется с нулевым результатом, т.е. в Таблица2.Слово8 выводится 0, а должно быть например 0,2, 0,03 и т.п.
Подскажите пожалуста, в чем тут дело.
Заранее благодарен.

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #1 Добавлено: 13.07.07 11:11
/

Ответить

Номер ответа: 2
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #2 Добавлено: 13.07.07 17:43
Если заменить \ на / т.е.
INSERT INTO Таблица2 ( Слово8 )
SELECT (Слово6) / (Слово7) AS Слово8
FROM Таблица2;

ничего не меняется - если Слово6 больше Слово7, то считает, если Слово6 меньше Слово7, то запрос выполняется, но в таблицу вносится "0" вместо реального числа.

Ответить

Номер ответа: 3
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #3 Добавлено: 13.07.07 17:50
даже если сделать просто запрос

SELECT Таблица2.Слово6 \ Таблица2.Слово7
FROM Таблица2;

то наблюдается та же проблема

Ответить

Номер ответа: 4
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #4 Добавлено: 13.07.07 18:09
тип данных СловоX - double?

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 13.07.07 18:25
Может проверить разделитель целой части от дробной?

Ответить

Номер ответа: 6
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #6 Добавлено: 13.07.07 18:36
типа реплейс запятую на точку?

Ответить

Номер ответа: 7
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #7 Добавлено: 13.07.07 19:04
Все поля в таблице числовые
насчет репрлейса не понял - поясни

Ответить

Номер ответа: 8
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #8 Добавлено: 13.07.07 19:40
Понятно что числовые, но тип данных этим не ограничивается. Если речь идет об ACCESS(хотя не уточнялось, что за база данных), то в конструкторе таблиц есть закладка "Общие/Размер поля". Странно ожидать при заданном "длинном целом" - дробное число.

Насчет replace,
ну вот, например:
Во мне сейчас четыре нольпятых хольстена.
их можно написать как "4*0,5" или как "4*0.5".
Replace( '4*0,5' , ',' , '.' ) - ищем в строке запятую, и меняем на точку.
Но что HACKER имел ввиду под проверкой разделителя... :-)?
Может replace((Слово6) / CDbl(Слово7), ',' , '.' ) ?
А может и нет.

даже если сделать просто запрос
SELECT Таблица2.Слово6 \

еще раз: / '!

Ответить

Номер ответа: 9
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #9
Добавлено: 13.07.07 20:02
Если аргументы целочисленные, то можно попробовать сконвертить их
перед операцией в float. Вроде такого:

SELECT CONVERT(float, Слово6) / CONVERT(float, Слово7) AS Слово8

или

SELECT CAST(Слово6 AS float) / CAST(Слово7 AS float) AS Слово8

Правда не знаю, насколько это универсальное решение, но в SQL Server
должно работать.

Ответить

Номер ответа: 10
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #10 Добавлено: 13.07.07 20:22
2EUGY: на счет размера и формата поля - об этом я подумал в первую очередь и перепробовал все варианты - один фиг тоже
\ / менял в обохих запросах - один фиг
реплейс - не совсем понял, как должен выглядеть запрос в моем случае
2Павел - проверил твой вариант - не работает

Ответить

Номер ответа: 11
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #11 Добавлено: 13.07.07 20:25
гдето встречал такое выражение "тип поля - дробный", не могу найти - может это поможет, поскольку понимаю, что числовое поля округляет до 0?

Ответить

Номер ответа: 12
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #12 Добавлено: 13.07.07 20:36
насколько понимаю должно быть "одинарное с плавающей точкой" - поставил - не работает

Ответить

Номер ответа: 13
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #13 Добавлено: 13.07.07 21:12
Нет наглядности и трудно посоветовать что-то.
Хотя все вроде-бы просто.

INSERT INTO Таблица2 ( Слово8 )
SELECT Слово6 / Слово7 FROM Таблица2 ...;

Если в базе данных тип поля Таблица2.Слово8 с плавающей точкой, то даже при целых типах Слово6 & Слово7 запрос занесет результат правильно.

P.S.
... As Слово8
только сбивает с толку. К слову8 в таблице2 это не имеет отношения.








Ответить

Номер ответа: 14
Автор ответа:
 Илья



Вопросов: 5
Ответов: 31
 Профиль | | #14 Добавлено: 13.07.07 21:57
Со всем разобрался - дело как обычно в невнимательности (в данном случае моей). теперь все работает. Спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам