2013-05-20 1 views
0

Я написал следующий код, чтобы отфильтровать людей, кто хочет бюллетень по почте или по электронной почте:Выберите, используя -1 в TinyInt поле на MYSQL

Sub loadoverviewnewsletter() 
     Dim sql As String 
     Dim sql1 As String 
    If newslettermail = True Then 
     sql = "SELECT * FROM Donateurs WHERE 'Newsletter per e-mail' =-1" 
     sql1 = "SELECT * FROM Donateurs WHERE 'Newsletter per e-mail' =-1" 
    ElseIf newsletterpost = True Then 
     sql = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =-1" 
     sql1 = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =-1" 
    ElseIf newsletternew = True Then 
     sql = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =0 AND 'Nieuwsbrief per e-mail' =0" 
     sql1 = "SELECT * FROM Donateurs WHERE 'Newsletter per post' =0 AND 'Nieuwsbrief per e-mail' =0" 
    Else 
     sql = "SELECT * FROM Donateurs" 
     sql1 = "SELECT * FROM Donateurs" 
    End If 

    Dim adapter As New MySqlClient.MySqlDataAdapter(sql, modConnectorHandler.ServerString) 
    Dim dt As New DataTable("newsletteroverview") 
    adapter.Fill(dt) 
    ShowDonateurs.datagrid.DataSource = dt 

    ShowDonateurs.ShowDialog() 
    Dim adapter1 As New MySqlClient.MySqlDataAdapter(sql1, modConnectorHandler.ServerString) 
    Dim cmd1 As New MySqlClient.MySqlCommand(sql1, modConnectorHandler.mysqlconnection) 
    modConnectorHandler.mysqlconnection.Open() 
    Dim myreader As MySqlClient.MySqlDataReader = cmd1.ExecuteReader 
    myreader.Read() 
    modConnectorHandler.mysqlconnection.Close() 
    OverviewNewsLetter.Close() 

К сожалению, она возвращает пустой DataGrid, в то время, когда Я выбираю вариант newsletternew, он показывает полную таблицу. Поля «Информационный бюллетень на электронную почту» и «Информационный бюллетень за сообщение» представляют собой поля tinyint, которые могут иметь значения -1 (значит, проверено в приложении) и 0 (неконтролируемые).

Я действительно не понимаю, почему это не работает. Надеюсь, кто-то может помочь.

ответ

1

Вам нужно использовать обратные метки вместо одиночных кавычек для имен столбцов. Рассмотрим WHERE условие:

WHERE 'Newsletter per e-mail' =-1 

Это сравнение строки постоянной Newsletter per e-mail к -1. Результатом сравнения всегда является false. Попробуйте это вместо:

WHERE `Newsletter per e-mail` = -1 

Теперь это ссылка на имя столбца, а не на константу строки.

И, наконец, избегайте имен столбцов, в которых, по возможности, нужны обратные сигналы (что почти всегда). Как вы можете видеть, они, как правило, приводят к неприятностям.

+0

Устранена проблема, спасибо !. Для стартера, подобного мне, это такая маленькая деталь, я даже не заметил, что между ними есть разница. Спасибо за вашу помощь! –

Смежные вопросы