Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

GGerminiani

Banco de Dados (Access 2012)

Recommended Posts

Prezados,

Bom dia.

 

Venho das raízes do VB6, e recebi solicitação de fazer um projetinho e convenhamos que VB6 não rola mais. Enfim, tive que "migrar" para o VB10.

 

Bem, apanhei "um pouco" (bastante), mas consegui fazer a conexão e tudo mais - particularmente acho que a ligação com o BD no VB antigo era MUITO mais simples. Mas OK.

 

A questão é a seguinte.

 

Com muito custo, consegui fazer a validação de um LOGIN que ao estar certo, o usuário migra para a tela MDI.Na tela MDI, tenho um status bar, e uma das toolstrip está invisível e nela quero armazenar o ID do login. Além disso, quero puxar o nome do login e o número de permissão para outras toolstrip.

 

Na verdade, consegui fazer tudo isso, mas acho que estou fazendo um caminho bem "luso" (perdão aos portugueses)... Por favor, deem uma verificada no código:

 

Banco de dados - Tabela LOGINS

ID_USER

USUARIO

SENHA

NOME

PERMISSAO

STATUS (Boolean)

 

 

Imports System.Data.OleDb

Dim Contador As Double

   Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
       Dim Conexao As New OleDbConnection
       Dim Comandos As New OleDbCommand
       Dim Comandos_1 As New OleDbCommand
       Dim Comandos_2 As New OleDbCommand
       Dim Comandos_3 As New OleDbCommand
       Dim Consulta As OleDbDataReader

       Conexao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; DATA SOURCE=" & Replace(Application.StartupPath, "\bin\Debug\", "") & "\setup_bd.accdb;"
       Conexao.Open()
       Comandos.CommandText = "SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Comandos.Connection = Conexao
       Consulta = Comandos.ExecuteReader

      Dim Status As Boolean
       Comandos_1.CommandText = "SELECT STATUS FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Comandos_1.Connection = Conexao
       Status = Comandos_1.ExecuteScalar

       Dim Nome As String
       Comandos_2.CommandText = "SELECT NOME FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Comandos_2.Connection = Conexao
       Nome = Comandos_2.ExecuteScalar

       Dim ID_Login As String
       Comandos_3.CommandText = "SELECT ID_USER FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Comandos_3.Connection = Conexao
       ID_Login = Comandos_3.ExecuteScalar

       If Contador = 3 Then
           MsgBox("Atenção." & Chr(13) & Chr(13) & "Você digitou 3 vezes o Usuário e/ou Senha errado(s)." & Chr(13) & Chr(13) & "Favor reinicie o sistema.", MsgBoxStyle.Critical, "Erro")
       Else
           If (Consulta.HasRows) Then
               If Status = False Then
                   MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário está INATIVO." & Chr(13) & Chr(13) & "Verifique com o Administrador.", MsgBoxStyle.Critical, "Erro")
               Else
                   Setup_MDI.Show()
                   Setup_MDI.STATUS_Login.Text = "LOGIN: " & Nome
                   Setup_MDI.STATUS_ID_Login.Text = ID_Login
                   Conexao.Close()
                   Me.Close()
               End If
           Else
               Contador = 1 + Contador
               MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário ou a Senha digitada está errada." & Chr(13) & Chr(13) & "Tentativa " & Contador & " de 3", MsgBoxStyle.Critical, "Erro")
           End If
       End If

   End Sub

 

Reparem que para cada campo do banco de dados, criei uma string para isso...

 

Por exemplo:

 

para puxar o ID:

Comandos_3.CommandText = "SELECT ID_USER FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"

 

para puxar o nome:

Comandos_2.CommandText = "SELECT NOME FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"

 

Enfim, não teria um caminho mais simples, puxando todos os campos e escolhendo as informações que eu queira (Select * From)???

Qual seria a syntaxe? Por exemplo, no VB6 era muito simples: LabelNome.text = LOGIN!Nome - visto que LOGIN seria o DataSet ! Nome (campo da tabela).

 

Bem, alguem conseguiria me ajudar?

 

Grato,

Gustavo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você poderia puxar tudo para um DataSet, também daria certo, mas você criou muitos comandos e muitas variáveis, dá pra fazer mais limpo:

 

 

Imports System.Data.OleDb
Public Class Form1


   Dim Contador As Double

   Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

       Dim Conexao As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA SOURCE=" & Replace(Application.StartupPath, "\bin\Debug\", "") & "\setup_bd.accdb;")
       Dim Comandos As New OleDbCommand
       Comandos.Connection = Conexao
       Dim Consulta As OleDbDataReader

       Conexao.Open()
       Comandos.CommandText = "SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Consulta = Comandos.ExecuteReader

       Dim Status As Boolean
       Comandos.CommandText = "SELECT STATUS FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Status = Comandos.ExecuteScalar

       Dim Dados() As String
       Comandos.CommandText = "SELECT NOME FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Dados(0) = Comandos.ExecuteScalar

       Comandos.CommandText = "SELECT ID_USER FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
       Dados(1) = Comandos.ExecuteScalar

       If Contador = 3 Then
           MsgBox("Atenção." & Chr(13) & Chr(13) & "Você digitou 3 vezes o Usuário e/ou Senha errado(s)." & Chr(13) & Chr(13) & "Favor reinicie o sistema.", MsgBoxStyle.Critical, "Erro")

       ElseIf (Consulta.HasRows) Then

           If Status = False Then
               MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário está INATIVO." & Chr(13) & Chr(13) & "Verifique com o Administrador.", MsgBoxStyle.Critical, "Erro")

           Else
               Setup_MDI.Show()
               Setup_MDI.STATUS_Login.Text = "LOGIN: " & Dados(0)
               Setup_MDI.STATUS_ID_Login.Text = Dados(1)
               Conexao.Close()
               Me.Close()
           End If

       Else
           Contador = 1 + Contador
           MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário ou a Senha digitada está errada." & Chr(13) & Chr(13) & "Tentativa " & Contador & " de 3", MsgBoxStyle.Critical, "Erro")
       End If


       If Conexao.State = ConnectionState.Open Then
           Conexao.Close()
       End If


   End Sub
End Class

 

 

Este foi o código que eu dei uma "enxugada", dá para fazer de outra maneira deste modo:

 

Crie esta função na classe:

 

 


Function GetData(SQL As String, connectionString As OleDbConnection) As DataSet

       Dim ds As New DataSet()
       Dim da As New OleDbDataAdapter(SQL, connectionString)


       connectionString.Open()
       da.Fill(ds)
       connectionString.Close()

       Return ds

 

 

Depois disso torne sua variável de conexão pública, declarando ela juntamente com o contador:

 

 

Dim Contador As Double
   Dim Conexao As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA SOURCE=" & Replace(Application.StartupPath, "\bin\Debug\", "") & "\setup_bd.accdb;")

 

 

O código para o botão fica assim:

 

 


Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
       Try
           Dim status As Boolean = GetData("SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'", Conexao).Tables(0).Rows(0)("STATUS")

           If Contador = 3 Then
               MsgBox("Atenção." & Chr(13) & Chr(13) & "Você digitou 3 vezes o Usuário e/ou Senha errado(s)." & Chr(13) & Chr(13) & "Favor reinicie o sistema.", MsgBoxStyle.Critical, "Erro")

           ElseIf (GetData("SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'", Conexao).Tables(0).Rows.Count > 0) Then

               If status = False Then
                   MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário está INATIVO." & Chr(13) & Chr(13) & "Verifique com o Administrador.", MsgBoxStyle.Critical, "Erro")

               Else
                   Setup_MDI.Show()
                   Setup_MDI.STATUS_Login.Text = "LOGIN: " & GetData("SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'", Conexao).Tables(0).Rows(0)("NOME").ToString
                   Setup_MDI.STATUS_ID_Login.Text = GetData("SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'", Conexao).Tables(0).Rows(0)("ID_USER").ToString
                   Me.Close()
               End If

           Else
               Contador = 1 + Contador
               MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário ou a Senha digitada está errada." & Chr(13) & Chr(13) & "Tentativa " & Contador & " de 3", MsgBoxStyle.Critical, "Erro")
           End If




       Catch p As Exception
           MsgBox(p.Message)

       Finally
           If Conexao.State = ConnectionState.Open Then
               Conexao.Close()
           End If
       End Try

 

 

Repare no uso da função:

 

GetData("SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'", Conexao).Tables(0).Rows(0)("ID_USER").ToString

 

Onde

GetData(SQL as String, Connection as OleDbConnection) as DATASET

Retorna um data set preenchido com o comando que você colocou na conexão que você colocou, isso poupa algumas variáveis e alguns comandos, já que você pode usar qualquer comando e qualquer conexão dentro da função para buscar literalmente qualquer dado dentro do seu banco de dados.

 

Na linha:

 

GetData("SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'", Conexao).Tables(0).Rows(0)("ID_USER").ToString

 

Substitua apenas o "ID_USER" para o nome da coluna que deseja buscar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é atoa que é Doctor. hehehe

 

Valeuuu!!! Ficou ótimo, e melhor que isso, consegui (acho) entender a lógica desse comando :grin:/>

 

Sem querer abusar... como faria o inverso dessa operação:

 

Tem uma função que estou fazendo, que seria de adicionar um exercício (ano) quando desejado pelo usuário...

 

Private Sub BTN_Confirma_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_Confirma.Click
       If TXT_Exercicio.Text = vbEmpty Then
           MsgBox("Atenção! Preencha o Exercício, contendo 04 dígitos (Ex.: '2012').", MsgBoxStyle.Critical, "Erro")
           Exit Sub
       End If

       If (TXT_Exercicio.Text < "2000") Or (TXT_Exercicio.Text > "2200") Then
           MsgBox("Atenção! O preenchimento deve ser entre 2000 a 2200.", MsgBoxStyle.Critical, "Erro")
           Exit Sub
       End If

       If MsgBox("Tem certeza que deseja adicionar um Exercício?" & Chr(13) & Chr(13) & "Observação: ao adicionar um Exercício, não é possível excluí-lo!", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirmar") = MsgBoxResult.Yes Then
           Try
               Dim existe As String = GetData("SELECT * FROM ANOS WHERE ANO ='" + TXT_Exercicio.Text + "'", Conexao).Tables(0).Rows(0)("ANO")

               MsgBox("Atenção! Este Exercício já é existente.", MsgBoxStyle.Critical, "Erro")

           Catch p As Exception
               ANOSTableAdapter.ANOSInsertQuery(TXT_Exercicio.Text)
               MsgBox("Exercício adicionado com sucesso!", MsgBoxStyle.Information, "Processo finalizado")
               Me.Close()
               Seleciona_Exercicio.Enabled = True
           Finally
               If Conexao.State = ConnectionState.Open Then
                   Conexao.Close()
               End If
           End Try
       Else
           Exit Sub
       End If
end sub

 

Acontece que no TRY estou querendo justamente que a função verifique se o ano digitado já tem cadastro no BD. se houver barra, se não houver, cadastra.

 

Do jeito que o code ficou aí, está ao contrário - se não tiver cadastro dá erro.

 

Poderia ajudar, por favor?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ponha um "not" no if :)

 

Ai ao invés de

 

If TXT_Exercicio.Text = vbEmpty Then

 

Ficaria

 

If Not TXT_Exercicio.Text = vbEmpty Then

 

A parte principal da programação é entender seu código e para que cada linha funciona, não adianta você saber tudo da linguagem se na hora de montar um programa você não consegue se organizar e entender para que tudo funciona, porque ai você tem uma aplicação que roda "nas coxas", pois no final só o fato de você não saber o que ela faz torna ela obscura e difícil de manejar rsrs

 

Fico muito contente que deu certo :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ponha um "not" no if :)/>/>/>

 

Ai ao invés de

 

If TXT_Exercicio.Text = vbEmpty Then

 

Ficaria

 

If Not TXT_Exercicio.Text = vbEmpty Then

 

A parte principal da programação é entender seu código e para que cada linha funciona, não adianta você saber tudo da linguagem se na hora de montar um programa você não consegue se organizar e entender para que tudo funciona, porque ai você tem uma aplicação que roda "nas coxas", pois no final só o fato de você não saber o que ela faz torna ela obscura e difícil de manejar rsrs

 

Fico muito contente que deu certo :)/>/>/>

 

Hummmm... acontece que não seria exatamente isso...

 

Veja:

If TXT_Exercicio.Text = vbEmpty Then

Esse é o comando que me alerta caso o usuário tenha pedido para adicionar um ano, mas o Txt está em branco... ou seja, essa parte está certa.

 

Minha dúvida está em relação à fazer a consulta no BD:

Quero que a função consulte o TXT_Exercicio, caso não tenha encontrado nenhum ano igual o do TXT_Exercicio, então pode cadastrar:

ANOSTableAdapter.ANOSInsertQuery(TXT_Exercicio.Text)

 

Agora, caso a consulta traga algum resultado, significa que o ano que o usuário está tentando cadastrar já existe, desta forma não tem o pq cadastrar novamente - deveria me dar um Exit SUB.

 

Consegui explicar?

 

De qualquer forma, muito obrigado!

 

TKS!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, utilize um condicional if combinado com aquela função que criamos ali encima:

 

If GetData("Instrução SQL", Conexao).Tables(0).Rows.Count <= 0 Then

//Cadastra

Else

Exit Sub

End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Khaos,

Boa tarde!

 

Então... não consegui :upset:

 

O código ficou assim para adicionar o ANO no comando do botão TXT_Ano.text, ficou:

 

If GetData("SELECT * FROM ANOS WHERE ANO ='" + TXT_Exercicio.Text + "'", Conexao).Tables(0).Rows.Count <= 0 Then
               ANOSTableAdapter.ANOSInsertQuery(TXT_Exercicio.Text)
               MsgBox("Exercício adicionado com sucesso!", MsgBoxStyle.Information, "Processo finalizado")
               Me.Close()
               Seleciona_Exercicio.Enabled = True
           Else
               MsgBox("erro")
           End If

 

 

Porem, quando eu executo, me dá o seguinte erro no módulo:

 

    Function GetData(ByVal SQL As String, ByVal connectionString As OleDbConnection) As DataSet

       Dim ds As New DataSet()
       Dim da As New OleDbDataAdapter(SQL, connectionString)

       connectionString.Open()
       da.Fill(ds)
       connectionString.Close()

       Return ds

   End Function

 

 

da.Fill(ds)= OleDbException não foi manipulada (Data type mismatch in criteria expression).

 

Aproveitando, pode me tirar outra dúvida por favor?

 

If GetData("SELECT * FROM ANOS WHERE ANO ='" + TXT_Exercicio.Text + "'", Conexao).Tables(0).Rows.Count

 

Conexao é a variável que faz a conexão (ligação e comunicação) com o banco de dados, certo?

.Tables(0) - o que siginifica?

 

E o comando abaixo? Fiquei confuso em relação ao connection String. DS é o dataset e DA pelo que entendi é o "Adaptador" para o BD.

 

connectionString.Open()

da.Fill(ds)

connectionString.Close()

 

Mais uma vez, muito obrigado!

 

Grato,

Gustavo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua primeira dúvida:

Não se usa "+" para concatenação de strings no VB, usamos o "&", então ficaria:

 

"SELECT * FROM ANOS WHERE ANO = '" & textbox.text &"'"

 

Segunda dúvida:

 

A função precisa de duas coisas, a query que ela vai executar sobre o banco de dados, e a conexão para ela poder achar o banco de dados no sistema.

 

Tables(0)

 

Por retornar um objeto do tipo dataSet, por padrão, é possível que este objeto receba diversas tabelas e não apenas uma, então quando usamos a instrução "Tables(0)" significa que estamos pegando a primeira tabela do array de tabelas que importamos, mas como só importamos uma tabela do banco de dados as outras posições do array são nulas, tendo só a posição 0 preenchida, ou seja, estamos selecionando a tabela que iremos usar.

 

Pesquise sobre o DataSet e o DataTable, a diferença é que um só pode armazenar dados de uma tabela e o outro de várias.

 

OleDbDataAdapter

É o que vai transpor os dados e "traduzí-los" da linguagem do bd para o DataSet.

 

da.Fill(ds)

Nesta instrução estamos falando para o Adapter pegar a instrução SQL dada a ele na conexão especificada e "encher" o DS com as informações retornadas.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Khaos,

Boa tarde.

 

Muito obrigado por todas as respostas! Foi muito claro e objetivo! Obrigado mesmo!

 

Bem, em relação ao meu problema... mesmo alterando a concatenação para &, continua me dando o mesmo problema abaixo:

 

Function GetData(ByVal SQL As String, ByVal connectionString As OleDbConnection) As DataSet

       Dim ds As New DataSet()
       Dim da As New OleDbDataAdapter(SQL, connectionString)

       connectionString.Open()
       da.Fill(ds)
       connectionString.Close()

       Return ds

End Function

 

Erro:

da.Fill(ds) - OleDbException não foi manipulada (Data type mismatch in criteria expression).

 

Lembrando que: gostaria que quando clicar no botão ADICIONAR ANO, a função verifique se já existe o ano digitado no meu TXT_Ano.text. Caso exista, exit sub, caso não exista, cadastre.

 

Obrigado novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use um try catch ao redor da função:

 

 

Function GetData(ByVal SQL As String, ByVal connectionString As OleDbConnection) As DataSet

Try
       Dim ds As New DataSet()
       Dim da As New OleDbDataAdapter(SQL, connectionString)

       connectionString.Open()
       da.Fill(ds)
       connectionString.Close()

       Return ds

Catch p as OleDbExeption
MsgBox(p.Message)

End Try

End Function

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente continua não dando certo...

 

Bem, vou tentando descobrir a solução!

 

Quando descobrir informo para agregar ao tópico!

 

De qualquer forma, obrigado!!!

 

Abs,

Gustavo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segundo a mensagem da Exception, você está colocando um tipo de dados errado na expressão, verifique se sua Query está correta com os tipos de dados exatos do banco, verifique também se a conexao que você usou na função é do tipo OleDbConnection

Compartilhar este post


Link para o post
Compartilhar em outros sites

O khaos esta certo.

Grande partes dos problemas que tive quando comecei no meu programa era esse.

Revisada na SQL e no banco de dados para ver se bate o tempo de dados pode resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala rapaziada!

 

Boa tarde!

 

Então, vcs estão com toda a razão!

 

No meu banco de dados access o campo EXERCICIO estava como NÚMERO e alterei para TEXTO e FUNCIONOU!

 

Porem me aconteceram erros:

 

1º Mudei diversas vezes no meu BD essa informação que fica localizado no BIN\DEBUG\MEU_BD. Porem cada vez que rodava, percebia que meus dados SUMIAM. Depois que fui perceber que cada vez que executava o programa, o meu BD era substituído por um BD "original" localizado em outra pasta.

Existe a possibilidade do FILL excluir dados?

Existe alguma solução para meu BD parar de ser substituído?

 

2º Por mais que consiga alterar meu campo NúMERO para TEXTO, sinceramente estou desconfortável com isso, pois querendo ou não ANO é Número... Então tentei de diversas formas transformar o TXT_Exercicio.text para DOUBLE ou INTEGER. Tentei das seguintes fomras:

 

Dim EXECICIO as Double = TXT_Exercicio.text
If (GetData("SELECT * FROM ANOS WHERE EXERCICIO ='" & EXERCICIO & "'", Conexao).Tables(0).Rows.Count > 0) Then

 

Ou então:

 

Dim EXECICIO as Integer = TXT_Exercicio.text
If (GetData("SELECT * FROM ANOS WHERE EXERCICIO ='" & EXERCICIO & "'", Conexao).Tables(0).Rows.Count > 0) Then

 

Nenhuma das duas maneiras funcionou. Estou fazendo algo errado?

 

Mais uma vez, muito obrigado!

 

Se não nos falarmos mais este ano, desejo à vcs um feliz natal e um próspero ano novo!

 

Boas festas!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, você está fazendo algo errado:

 

 

Dim EXECICIO as Double = Convert.ToDouble(TXT_Exercicio.text)
Dim EXECICIO as Integer = Convert.ToInt32(TXT_Exercicio.text)

 

 

Não podemos simplesmente falar que ele é integer ou double, existe realmente uma conversão que deve ser feita antes disso. Você pode inclusive fazê-la dentro da query:

 

If (GetData("SELECT * FROM ANOS WHERE EXERCICIO ='" & Convert.ToInt32(TXT_Exercicio.text) & "'", Conexao).Tables(0).Rows.Count > 0) Then

 

Cara, isso é coisa básica de programação... Você está acostumado a trabalhar com BD ou é sua primeira aplicação?

 

Existe a possibilidade do FILL excluir dados?

 

Não, como o próprio nome diz "FILL", uma palavra inglesa que significa encher ou preencher algo ou alguma coisa. Para tal função você precisa realizar uma query no banco de dados com o comando DELETE * FROM <tabela> WHERE <campo> = <condição>

 

Existe alguma solução para meu BD parar de ser substituído?

 

Mova seu bd para dentro da pasta bin/debug, na connectionstring deixe-a apenas como "Provider=Microsoft.OleDb.12.0; Data Source=MEU_BD.accdb", isso claro se você estiver usando access, na prática é apenas remover tudo que vem depois do "Data Source" e deixar apenas o nome do BD com a extensão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.