Результат всегда ноль - PullRequest
0 голосов
/ 16 апреля 2019

При выполнении этого фрагмента кода на моем веб-сервере результат всегда будет 0 (ZERO)

Может кто-нибудь подсказать на эту проблему (решение еще лучше:-D)

Dim MyTotalPages
Dim Recordset
Dim Connection
Dim aspDBcount
Dim ShowRowCount

ShowRowCount = 3 ' Fixed size

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

ConnString = "DRIVER={MySQL ODBC 5.3 Unicode Driver}; SERVER=server_address; UID=a_username;PASSWORD=a_password; OPTION=3; Port=a_port"

Connection.Open ConnString

SQL = "SELECT COUNT(*) AS MyRowCounts FROM `a_database`.`a_table`;"

Set Recordset = Connection.Execute(SQL)

aspDBcount = (Recordset("MyRowCounts") * 1) 

Recordset.Close

MyTotalPages = (aspDBcount * 1) / (ShowRowCount * 1))

Response.Write aspDBcount & "HTML_NEW_LINE" & ShowRowCount & "HTML_NEW_LINE" & MyTotalPages 
  • Вывод 10, 3, 0
  • Следуетбыть 10, 3, 3.33333 ... ( с текущими данными в базе данных )

1 Ответ

0 голосов
/ 17 апреля 2019

Использование:

aspDBcount = cInt(Recordset("MyRowCounts")) * 1

В MySQL SELECT COUNT() возвращает целочисленный тип BIGINT и нуждается в преобразовании, прежде чем вы сможете манипулировать им и правильно использовать его в VBScript.

CInt может конвертировать числа только между -32,767 и 32,767

Если ваш SELECT COUNT() превышает этот диапазон, вам нужно вместо этого использовать CLng, который имеет диапазон от -2,147,483,648 до 2,147,483,647

Вы также можете использовать CDbl, что немного странно. Он может конвертировать ОГРОМНЫЕ числа и, похоже, не переполнен. Он просто в конечном итоге вернет ошибку Invalid number, если вы попытаетесь передать смехотворно большое целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...