Jump to content

Recommended Posts

Posted

boas pessoal quero que segundo um valor de uma combobox me abre uma outra com outros valores.. so que está a dar-me este erro:

Erro de sintaxe (operador em falta) na expressão de consulta 'marca ='.

e estou a usar este codigo:

Private Sub ComboBox2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.GotFocus

        'Retorna os nomes dos produtos da tabela  produtos

        Dim strConn As New OleDb.OleDbConnection(Stand.My.Settings.ligacaoBD)

        strConn.Open()

        Dim DSet As New DataSet(), SQLStr As String

        Dim cmd As System.Data.OleDb.OleDbCommand

        Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter()

        'cria o objeto datarow e datatable

        Dim tRow As DataRow, tTbl As DataTable

        'intruções

        With dbAdaptr

            .TableMappings.Add("Table", "modelo")

            SQLStr = "Select modelo from modelo where marca = " + ComboBox1.Text + ""

            cmd = New System.Data.OleDb.OleDbCommand(SQLStr, strConn)

            cmd.CommandType = CommandType.Text

            .SelectCommand = cmd

            .Fill(DSet)

            .Dispose()

        End With

        DSet.AcceptChanges()

        tTbl = DSet.Tables.Item(0)

        DSet.Dispose()

        strConn.Close()

        ' preenche a combo combobox

        nomefornecedortextbox.Text = ""

        nomefornecedortextbox.Items.Clear()

        nomefornecedortextbox.BeginUpdate()

        ' carrega a combo com o nome dos fornecedores

        For Each tRow In tTbl.Rows

            ComboBox2.Items.Add(tRow("modelo").ToString)

        Next

        nomefornecedortextbox.EndUpdate()

    End Sub

dá erro aqui: .Fill(DSet)

Posted

penso que o problema esteja na condição WHERE, por se nao mete condição ele apresenta-me os dados..

Então e se substituires o + por & ? Além disso se o marca for uma string dever fazer:

SQLStr = "Select modelo from modelo where marca = '" & ComboBox1.Text & "'"

Posted

Então e se substituires o + por & ? Além disso se o marca for uma string dever fazer:

SQLStr = "Select modelo from modelo where marca = '" & ComboBox1.Text & "'"

da erro: Não foi fornecido nenhum valor para um ou mais parâmetros necessários. é de referir que o valor que estou a avaliar é da minha form e está numa combobox

Posted

da erro: Não foi fornecido nenhum valor para um ou mais parâmetros necessários. é de referir que o valor que estou a avaliar é da minha form e está numa combobox

Qual é o resultado de ComboBox1.Text  ?

Posted

Não, no Visual Studio mete um break point na linha a seguir a essa e faz Debug (F5).

Depois quando a execução parar no break point aponta para ComboBox1.Text para veres qual é o valor q tem.

Ou então um Debug.Writeline(ComboBox1.Text) ou Msgbox ... também dá para ver 😁

Posted

Private Sub ComboBox2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.GotFocus

        'Retorna os nomes dos produtos da tabela  produtos

        Dim strConn As New OleDb.OleDbConnection(Stand.My.Settings.ligacaoBD)

        strConn.Open()

        Dim DSet As New DataSet(), SQLStr As String

        Dim cmd As System.Data.OleDb.OleDbCommand

        Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter()

        'cria o objeto datarow e datatable

        Dim tRow As DataRow, tTbl As DataTable

        'intruções

        With dbAdaptr

            .TableMappings.Add("Table", "modelo")

            SQLStr = "Select modelo from modelo where marca = " + ComboBox1.Text + ""

            cmd = New System.Data.OleDb.OleDbCommand(SQLStr, strConn)

            cmd.CommandType = CommandType.Text

            .SelectCommand = cmd

            .Fill(DSet)

            .Dispose()

        End With

        DSet.AcceptChanges()

        tTbl = DSet.Tables.Item(0)

        DSet.Dispose()

        strConn.Close()

        ' preenche a combo combobox

        nomefornecedortextbox.Text = ""

        nomefornecedortextbox.Items.Clear()

        nomefornecedortextbox.BeginUpdate()

        ' carrega a combo com o nome dos fornecedores

        For Each tRow In tTbl.Rows

            ComboBox2.Items.Add(tRow("modelo").ToString)

        Next

        nomefornecedortextbox.EndUpdate()

    End Sub

Posted

Porque estás a utilizar no evento GotFocus ?

Já te disse mais do que uma vez que isto está mal:

SQLStr = "Select modelo from modelo where marca = " + ComboBox1.Text + ""

com & combobo1.text & fica igual.. já agora qual é a diferente entre & e +?

Posted

com & combobo1.text & fica igual.. já agora qual é a diferente entre & e +?

Não é so mudar o operador ... existem também as plicas porque estás a utilizar uma string na instrução e não um número:

SQLStr = "Select modelo from modelo where marca = '" & ComboBox1.Text & "'"

O operador para concatenar strings em vb.net é o & e não o +. O + funciona na maioria dos casos mas não em todos.

Posted

Não é so mudar o operador ... existem também as plicas porque estás a utilizar uma string na instrução e não um número:

SQLStr = "Select modelo from modelo where marca = '" & ComboBox1.Text & "'"

O operador para concatenar strings em vb.net é o & e não o +. O + funciona na maioria dos casos mas não em todos.

olha tive a pesquisar e resolvi o problema assim:

SQLStr = "Select modelo from marcamodelo where marca like '" + marcacombo.Text + "%'"

mas estou com o problema de estar sempre a ir buscar os valores, no gotfocus quando ganha focus vai buscar no  click a mesma coisa..

Posted

olha tive a pesquisar e resolvi o problema assim:

Tu insistes em usar o +, mas ok quando tivere problemas depois logo vês.

Se explicasses a situação já tinhas o problema resolvido à muito tempo ... porque não dissestes que na base de dados está fiat + qualquer coisa ?

Porque usas o gotfocus ? Devias carregar quando no evento selectedindexchanged da marcacombo.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.