• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

erro na instrução

21 mensagens neste tópico

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
SQLStr = "Select modelo from modelo where marca = " + ComboBox1.Text + ""

select modelo from modelo? Tens uma tabela com o nome do campo? Não te enganaste nesta linha?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

select modelo from modelo? Tens uma tabela com o nome do campo? Não te enganaste nesta linha?

sim isso está certo..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 & "'"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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  ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é o resultado de ComboBox1.Text  ?

um valor de uma tabela, neste caso texto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê em debug o valor em si mesmo.

Não foi fornecido nenhum valor para um ou mais parâmetros necessários.

isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

tem "fiat" que é o valor que selecionei na combobox anterior

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tem "fiat" que é o valor que selecionei na combobox anterior

Mostra lá o código como está ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 + ""

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 +?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

o gotfocus é uma propriedade que usei para testes, agoa decidi fazer antes um procedimento e depois chama-lo no load. e pronto apartir de agora vou passar a usar o "& nome &":P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora