Истинное значение из SQL заносится в список как -1 - PullRequest
0 голосов
/ 11 октября 2018

Никогда не сталкивайтесь с этим раньше.Я перенес некоторые значения столбцов в список с SQL-сервера, используя VBA.Один из столбцов, Exception, является логическим значением, поэтому его значение в SQL равно 0 или 1. Однако, когда я загружаю результаты в список в форме VBA, он отображается как -1.Я прикрепил свой код ниже.Любое понимание было бы здорово.

Sub Getattendhistory()
database_connect
Dim SQLstr As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim Counter As Long
Dim list As Object
Set list = AttendHistory.Results
SQLstr = "select [ID],[createddate],[notseatedreason],[exception],[exceptionreason] from dbo.[attendancehistory] where [agentname] = '" & SearchForm.Results.Text & "'"
rs.Open SQLstr, appconn, adOpenStatic
If (rs.BOF And rs.EOF) Then
MsgBox "No Attendance History.Contact Command Center"
Exit Sub
End If
With list
Counter = 0
Do Until rs.EOF
    .AddItem
    .list(Counter, 0) = rs![ID]
    .list(Counter, 1) = rs![CreatedDate]
    If IsNull(rs![NotSeatedReason]) Then .list(Counter, 2) = "Seated"
    If Not IsNull(rs![NotSeatedReason]) Then .list(Counter, 2) = rs![NotSeatedReason]
    If IsNull(rs![Exception]) Then .list(Counter, 3) = ""
    If Not IsNull(rs![Exception]) Then .list(Counter, 3) = rs![Exception]
    If IsNull(rs![Exceptionreason]) Then .list(Counter, 4) = "N/A"
    If Not IsNull(rs![Exceptionreason]) Then .list(Counter, 4) = rs![Exceptionreason]
Counter = Counter + 1
rs.MoveNext
Loop
End With
rs.Close
database_Disconnect
Set rs = Nothing

End Sub

1 Ответ

0 голосов
/ 11 октября 2018

Поскольку в VBA (и VB в целом) True хранится как -1, а false как 0. Просто потому, что SQL Server представляет True как 1, так и False как 0, то, что фактически возвращается в наборе записей, это Boolean True или Boolean False,Поэтому, когда вы отображаете Exception, True представляется как -1.Что вы, вероятно, хотите сделать, это условно отобразить строку «True» или «False» в зависимости от логического значения.

Вот ссылка на справочник по языку VB.Это для VB.Net, но то же самое относится к VB6 и VBA.https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/data-types/boolean-data-type

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