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

beto_88

codigo a nao funcionar

19 mensagens neste tópico

tenho aqui um problema com o codigo que nao me está a funcionar correctamente . o que isto é para fazer é mostrar no ID_cao apenas os caes que nao estao adoptados mas aparecem todos

Se alguem me conseguir ajudar era muito bom  :P

TextBox1.Text = ID_caoComboBox.SelectedValue
        TextBox2.Text = ID_clienteComboBox.SelectedValue



        DataGridView2.Visible = False



        Try


            Dim lm As String = "INSERT INTO `Adopcao` ( `ID_cao`, `ID_cliente`) VALUES ( ?, ?)"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(pap2.My.Settings.LigacaoBD)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm, connection)

                'pergunta se quer guardar ou nao
                Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNo, "")
                If msg = MsgBoxResult.Yes Then


                    command.Parameters.Add("ID_cao", OleDbType.VarChar).Value = TextBox1.Text()

                    command.Parameters.Add("ID_cliente", OleDbType.VarChar).Value = TextBox2.Text()

                ElseIf msg = MsgBoxResult.No Then
                    Exit Sub

                End If



                ' Abre a ligação e insere o registo
                connection.Open()
                Dim x As Integer = command.ExecuteNonQuery()
                If x <> 1 Then
                    Throw New ArgumentException("Não foi possível inserir o registo na base de dados!", "")

                End If

            End Using

        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try


        DataGridView2.Visible = True
        ' O PROVIDER... É COPIAR A CONNECTIONSTRING DA LIGAÇÃO DA BD, NA JANELA PROPIEDADES


        Dim db As New OleDbConnection(pap2.My.Settings.LigacaoBD)

        ' LIGAR A BD
        db.Open()

        ' PERGUNTAR QUAIS OS DADOS A PROCURAR
        '
        '
        '

        ' ACESSO AOS DADOS
        'Dim comandosql = "Select ID_adopcao, ID_cao, ID_cliente from Adopcao "
        Dim comandosql = "SELECT * from caes where id_cao not in (select id_cao from adopcao) ;"
        Dim cmd As New OleDbCommand(comandosql, db)

        Dim dtr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

        ' CRIAÇÃO DE COLUNAS NO DATAGRIDVIEW
        Dim num_campos As Integer
        Dim campo As String
        DataGridView2.Columns.Clear()



        num_campos = dtr.FieldCount
        For idx = 0 To num_campos - 1
            campo = dtr.GetName(idx)
            DataGridView2.Columns.Add(campo, campo)

        Next


        ' CARREGAR OS DADOS
        Dim idx_linha As Integer

        idx_linha = 0

        While dtr.Read()
            Dim linha As New DataGridViewRow()
            DataGridView2.Rows.Add(linha)
            DataGridView2.Rows(idx_linha).Cells(0).Value = dtr.Item(0)
            DataGridView2.Rows(idx_linha).Cells(1).Value = RTrim(dtr.Item(1))
            DataGridView2.Rows(idx_linha).Cells(2).Value = RTrim(dtr.Item(2))




            idx_linha = idx_linha + 1


        End While

        ' AJUSTE DAS COLUNAS DO DATAGRIDVIEW
        DataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells

        Button2.Visible = True


        dtr.Close()

       

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao precebi bem a tua duvida... podias se mais explicito sff.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

adopcao.png

ai se vires na imagem na dataGrid está só um cao porque é o unico que não se encontra adoptado

mas depois na ID_caoComboBox aparece oque não está adoptado e oque está adoptado e o objectivo é ficar apenas os que ainda não foram adoptados

espero que tenha esplicado de forma a perceberes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

adopcao.png

ai se vires na imagem na dataGrid está só um cao porque é o unico que não se encontra adoptado

mas depois na ID_caoComboBox aparece oque não está adoptado e oque está adoptado e o objectivo é ficar apenas os que ainda não foram adoptados

espero que tenha esplicado de forma a perceberes

Penso que tens a combobox a ir buscar os dados directamente as tabelas de todos os caes e nao a essa tabela onde estao os caes nao adoptados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao e nao podes meter uma campo na tabela chamado adoptado (Sim ou Nao)? depois fazias um select ID_Cao Where Adoptado = Nao

e mostravas os resultados na combo box

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao e nao podes meter uma campo na tabela chamado adoptado (Sim ou Nao)? depois fazias um select ID_Cao Where Adoptado = Nao

e mostravas os resultados na combo box

--------------------------------------------

Nao porque ja nao posso acrescentar mais nenhum campo na tabela senao vai dar barraca e tamem ja tou mesmo no final da pap so me falta mesmo isto que nao me esta a funcionar  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu nesse código não mostras o código que está a preencher a ComboBox

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto é o form dos caes ai tao os dois caes o adoptado e o nao adoptado o adoptado é o do ID -> 14

formcaes.png

---------------------------------------------------------------------------------------------------------

Com este codigo era para tar a aparecer aqui neste form em baixo ai na comboBOX do ID_cao apenas o outro cao e nao esse do ID -> 14

Como aqui podem ver o cao adoptado esta na dataGrid dos caes que foram adoptados

82257132.png

so que se eu meter outro codigo que ja tive mas o meu professor disse para meter este k meti ai ao principio, porque o primeiro que tinha ao seleccionar o ID_cao e o ID_cliente ao gravar apagava o cao e o cliente da base de dados ou seja tamem apagava da DataGrid dos Caes que foram adoptados e ai nao devia apagar devia sim apagar so na form dos caes porque a DataGrid das adopcoes é pa ficar la registado para saber os caes que foram adoptados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ja precebi o que queres.. mas podes-me mostrar o codigo que estas a usar no combox para eu ver, onde e que estas a fazer mal, e q tens td bem pelo o que precebi mas so na combox e que tens esse problema que ele esta a mostrar os resoltados todos certo ?

  outra coisa como e que tu sabes que e adoptado ou nao adoptado ^???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu na tenho nenhum codigo na ComboBox o unico codigo que tenho e aquele que inseri aqui a em cima

eu tive a fazer isso com o meu prof e ele na me disse nada de meter codigo na comboBox

eu nao sei se e adoptado ou nao .... eu adiciono caes e os clientes e depois na adopcao so o que faco é seleccionar o cao e o cliente que o vai adoptar e guardo depois carrego no botao "DAR PARA ADOPCAO" e só ai é que depois sei que esse cao ja foi adoptado porque vai aparecer na dataGrid onde está ai o ID_adopcao, ID_cliente e ID_cao...

eu na comboBOX ID_cao e ID_cliente tenho ai pa aparecer como nome mas depois vai guardar com o numero isso de aparecer o nome é só para facilitar, para assim saber qual é o cao que vou seleccionar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao como e que queres que so apareca la o cao adoptado se nao tens essa informaçao guardada em lado nemhum... sabes pk aparece na datagrid boa mas a combox e outra cena diferente... outro controlo outra estrutura... tem que ir buscar essa informaçao a alguma lado... assim nao vais la

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao eu axo que nao é preciso codigo na comboBox para isto da adopcao tem que ter codigo da comboBox mas nao dentro da comboBox

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao eu axo que nao é preciso codigo na comboBox para isto da adopcao tem que ter codigo da comboBox mas nao dentro da comboBox

Tens de ter um codigo que diga onde vai buscar os dados e que dados, podes fazer isso atravez do wizard

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao eu axo que nao é preciso codigo na comboBox para isto da adopcao tem que ter codigo da comboBox mas nao dentro da comboBox

  mas tens smp que especificar que dados e que queres que apareçam senao ele nao advinha...

  no meu ver isso resolvia-se todo com um cado sim/nao.. um select campo form tabela where campo = falso e dava adoptação, oh entao algum elemento do tipo variavel ou msm um dataset da datagrid que e criada com os caes adoptados ou nao... passase esse resoltado dos nome para a combo so assim e que es capaz de diferenciar os dados que la inseres....

  Isto no meu ver ... se tiver mal digam

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim comandosql = "SELECT ID_cao from Caes where ID_cao NOT IN (SELECT ID_cao From Adopcao) ;"

axas que assim este select dá

Acerca disso do DataSet podes explicar melhor o que isso vai fazer ou como faco isso  B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um truque que dá muito jeito mesmo com bases de dados em SQL

Usas o Access para ver os dados da base de dados(tabelas), e na parte dos querys (em edição sql) metes a string SQL, depois passas para tabela (carregas no icon) e tens o resultado da string.

Já me ajudou muito

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Um truque que dá muito jeito mesmo com bases de dados em SQL

Usas o Access para ver os dados da base de dados(tabelas), e na parte dos querys (em edição sql) metes a string SQL, depois passas para tabela (carregas no icon) e tens o resultado da string.

Já me ajudou muito

Desculpa a ignorancia podes expplicar melhor  B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Que tipo de base de dados estás a usar?

Se for access é directo, se for SQL tens que criar um projecto no access a partir de uma base de dados existente, neste caso se a versão do sql e do access forem diferentes poderás ter que a base de lados só para o access no momento que crias o projecto.

A partir deste momento, podes consultar e editar os dados da Tabelas, com mais facilidade que no SQL Express.

E podes ir a Consultas (ou querys), criar um consulta nova e fazer as ligações de tabela em tabela, tal como já vi noutro tópico teu.

O meu access é 2003, pelo que pode ser diferente do teu, mas no meu caso na barra de icons, por baixo do menu, do lado esquerdo (há esquerda do gravar) tem um icon com uma setinha para baixo, ao carregares aí aparece um sub-menu onde podes ver: "Vista de SQL", carregas aí e editas a consulta, ou acrescentar o teu código, depois no mesmo icon carregas para "Vista em Folha de Dados" e aparece o resultado da tua consulta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim o meu e' o ACESS 2007 mas eu grao osprojectos cpmo 2003 e o meu tamem tem a vista SQL e assim

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