MySQL проблемы с VIEW

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

MySQL проблемы с VIEW

Сообщение SSecurity » 24.04.2007 (Вт) 18:07

приветствую Всех!

Смастерил мне MySQL view по следующему коду:
Код: Выделить всё

CREATE ALGORITHM=UNDEFINED DEFINER="shopadmin"@"%"
SQL SECURITY DEFINER VIEW "viewtovars" AS
select
      "t"."TID" AS "TID",
      "t"."SHTCODE" AS "BarCode",
      "t"."ART" AS "Art",
      "t"."TName" AS "TName",
      "t"."CID" AS "CID",
      "t"."MID" AS "MID",
      "t"."PID" AS "PID",
      "t"."KID" AS "KID",
      ifnull("p"."NewPrice",0) AS "NewPrice",
      ifnull("p"."Nacenka",0) AS "Nacenka",
      ifnull(("p"."NewPrice" * (1 + ("p"."Nacenka" / 100))),0) AS "EndPrice",
      ifnull("p"."Skidka",0) AS "Skidka"
from
    ("tbltovars" "T"
    left join "tblprices" "P" on (("t"."TID" = "p"."TID")))


Суть в том что view компонует две таблицы, в MySQL Query Browser все работает т.е. запрос:
Код: Выделить всё

Select * from `Shop`.`viewtovars`;

выдает мне именно то, что я хотел.

Но когда я сделал

Код: Выделить всё

SQLStr = "SELECT * FROM `Shop`.`viewtovars`;"
Set RS = CN.Execute(SQLStr)
If Not RS.EOF Then
...
End if

Получил ... отказ, т.е. выполнилось и ничего не озвратилось.

Строка соединения такая:
Код: Выделить всё

Provider=MSDASQL.1;Persist Security Info=False;User ID=shopadmin;Extended Properties="DATABASE=shop;DRIVER={MySQL ODBC 3.51 Driver};OPTION=0;PORT=0;SERVER=localhost;STMT=SET CHARACTER SET cp1251;UID=shopadmin"


Пробовал зайти под "root" та же ситуация.

Помогите, ведь наверняка все просто.
Хотя, как посмотреть.

Заранее благодарен за ответ.

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 25.04.2007 (Ср) 8:10

Многочисленные попытки, разобраться привели к тому,
что если использовать запрос
Код: Выделить всё
SQLStr = "SELECT TID FROM `Shop`.`viewtovars`;"

или
Код: Выделить всё
SQLStr = "SELECT BarCode FROM `Shop`.`viewtovars`;"

или
Код: Выделить всё
SQLStr = "SELECT TID, BarCode FROM `Shop`.`viewtovars`;"

и т.д
но при этом не использовать NewPrice, EndPrice, Nacenka, Skidka, то все корректно и данные приходят.
А от упоминание одного из жирных полей приводит к отсутствию записей.

Чего-то пока не могу понять причины, может кривость формирования VIEW, но мне кажется запрос сформироан верно и выполняется в MySQL QB

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.04.2007 (Ср) 11:47

Не возвращаются только вычисляемые поля?..
Хм...
В чём необходимость использования MSDASQL? Почему не сразу {MySQL ODBC 3.51 Driver}?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 25.04.2007 (Ср) 12:08

Попробуй разные опции подключения:
Using Connector/ODBC with Microsoft Applications

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 25.04.2007 (Ср) 12:33

GSerg писал(а):Не возвращаются только вычисляемые поля?..
Хм...
В чём необходимость использования MSDASQL? Почему не сразу {MySQL ODBC 3.51 Driver}?


это результат
Код: Выделить всё
Debug.Print CN

изначально запрос иной устанавливался
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.04.2007 (Ср) 12:35

Какой же?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 25.04.2007 (Ср) 13:05

Код: Выделить всё



результат исполнения:
Код: Выделить всё
SELECT ePrice FROM viewtovars WHERE TID=10;
Операция не допускается, если объект закрыт.


Назначить RS.ActiveConnection невозможно,
после подобного назначения, например такого:
Код: Выделить всё
Set RS.ActiveConnection = CN

получаем
Код: Выделить всё
RS.ActiveConnection = Nothing


Re: GSerg
Не возвращаются только вычисляемые поля?

в данном случае НЕТ, я добавил во VIEW
поле (T.TID + 1000) as NewTID. VB мне его благополучно вернул (когда я попросил у него только это поле).

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 25.04.2007 (Ср) 13:18

GSerg писал(а):Какой же?


Код: Выделить всё
ConnectToMySQL.Open "Driver=MySQL ODBC 3.51 Driver;" & _
                      "Provider=MSDASQL.1;" & _
                      "Persist Security Info=False;STMT=SET CHARACTER SET cp1251; OPTION=16384;" & _
                      "Extended Properties=""DATABASE=" & BaseName & ";SERVER=" & Source & """", _
                      UserName, Password


щас попробую убрать Provider=MSDASQL.1

Результат: Без него - точно тоже самое - не хотит мне ничего показывать.

По вычисляемым значениям: Вообщем не возращаются поля из таблицы tblPrices P, репрессии по таблице.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.04.2007 (Ср) 13:48

Для VB рекомендовано OPTION=3.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 25.04.2007 (Ср) 13:56

Уже было OPTION=3 перед тем как менял по совету Gloom.
Тоже самое получается.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 201

    TopList