LOOP PARA APAGAR LINHAS
Prezados amigos, estou precisando de ajuda novamente.
Ainda estou desenvolvendo as linha de código, mas já estou com um problema, tenho um bando de dados, com uma tabela que tem o nome de tabela1, quero pegar a primeiro linha da tabela e criar variáveis das informações, depois quero apagar apenas a linha com estas informações, e o loop vai funcionar até apagar a ultima linha, quando o banco de dados estiver todo apagado quero encerrar, segue códigos que estou usando:
Dim con = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\Banco de dados.MDB[Ô])
con.Open()
Dim sql As String
sql = [Ô] select * FROM tabela1[Ô]
sql.movefirst()
If sql > 0 Then
Dim CD As New OleDbCommand()
CD.Connection = con
CD.CommandText = sql
Dim DR As OleDbDataReader = CD.ExecuteReader
If DR.Read Then
Dim VAR1 As String = CStr(DR([Ô]coluna1[Ô]))
Dim VAR2 As String = CStr(DR([Ô]coluna2[Ô]))
Dim VAR3 As String = CStr(DR([Ô]coluna3[Ô]))
Dim deletar As String
deletar = [Ô]DELETE * FROM tabela1 WHERE coluna1= [Ô] & VAR1 & [Ô] and coluna2 = [Ô] & VAR2 & [Ô] and coluna3= [Ô] & VAR3 & [Ô][Ô]
Dim DEL As New OleDbCommand(deletar, con)
DEL.ExecuteNonQuery()
End If
End If
Obrigado!
Mário.
Ainda estou desenvolvendo as linha de código, mas já estou com um problema, tenho um bando de dados, com uma tabela que tem o nome de tabela1, quero pegar a primeiro linha da tabela e criar variáveis das informações, depois quero apagar apenas a linha com estas informações, e o loop vai funcionar até apagar a ultima linha, quando o banco de dados estiver todo apagado quero encerrar, segue códigos que estou usando:
Dim con = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\Banco de dados.MDB[Ô])
con.Open()
Dim sql As String
sql = [Ô] select * FROM tabela1[Ô]
sql.movefirst()
If sql > 0 Then
Dim CD As New OleDbCommand()
CD.Connection = con
CD.CommandText = sql
Dim DR As OleDbDataReader = CD.ExecuteReader
If DR.Read Then
Dim VAR1 As String = CStr(DR([Ô]coluna1[Ô]))
Dim VAR2 As String = CStr(DR([Ô]coluna2[Ô]))
Dim VAR3 As String = CStr(DR([Ô]coluna3[Ô]))
Dim deletar As String
deletar = [Ô]DELETE * FROM tabela1 WHERE coluna1= [Ô] & VAR1 & [Ô] and coluna2 = [Ô] & VAR2 & [Ô] and coluna3= [Ô] & VAR3 & [Ô][Ô]
Dim DEL As New OleDbCommand(deletar, con)
DEL.ExecuteNonQuery()
End If
End If
Obrigado!
Mário.
car,
se você quer recuperar determinada(s) informação(ões) do BD e depois apagar tudo, inclusive as outras informações,
Você tem que, primeiro, pegar as informações com o [txt-color=#e80000]SELECT[/txt-color] e o[txt-color=#e80000] DELETE [/txt-color]você tem que executar fora do loop [txt-color=#0000f0]Read()[/txt-color].
se você quer recuperar determinada(s) informação(ões) do BD e depois apagar tudo, inclusive as outras informações,
Você tem que, primeiro, pegar as informações com o [txt-color=#e80000]SELECT[/txt-color] e o[txt-color=#e80000] DELETE [/txt-color]você tem que executar fora do loop [txt-color=#0000f0]Read()[/txt-color].
Não consegui entender direito o que você quer fazer. Você quer guardar todos os registros em variáveis ou apenas aquela que está sendo deletada? qual finalidade disso?
OBS: utilize aspas simples quando for usar campos como string.
ex: deletar = [Ô]DELETE * FROM tabela1 WHERE coluna1= [ô] [Ô] & VAR1 & [Ô] [ô] and coluna2 = [ô] [Ô] & VAR2 & [Ô] [ô] and coluna3=[ô] [Ô] & VAR3 & [Ô] [ô] [Ô]
OBS: utilize aspas simples quando for usar campos como string.
ex: deletar = [Ô]DELETE * FROM tabela1 WHERE coluna1= [ô] [Ô] & VAR1 & [Ô] [ô] and coluna2 = [ô] [Ô] & VAR2 & [Ô] [ô] and coluna3=[ô] [Ô] & VAR3 & [Ô] [ô] [Ô]
JABA/PEGUDO, Obrigado pelo retorno.
Eu não expliquei tudo para não ficar muito comprido a postagem, mas reconheço que ficou confuso, vou explicar melhor.
Tenho um bando de dados, com uma tabela que tem o nome de tabela1, quero fazer variáveis e acrescentar estes valores na tabela resultado, depois quero apagar apenas todas as linhas com estas informações pois tem linhas em duplicidade, e o loop vai funcionar até apagar a ultima linha, fazendo isto, na tabela resultado vai ficar apenas uma linha, sem repetiçoes, quando o banco de dados, tabela1, estiver todo apagado quero encerrar, segue códigos que estou usando:
Dim con = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\Banco de dados.MDB[Ô])
con.Open()
Dim sql As String = [Ô] select coluna1,coluna2,coluna3 FROM tabela1[Ô]
sql.movefirst()
If sql > 0 Then
Dim sql As String = [Ô] select coluna1,coluna2,coluna3 FROM tabela1[Ô]
Dim CD As New OleDbCommand()
CD.Connection = con
CD.CommandText = sql
Dim DR As OleDbDataReader = CD.ExecuteReader
If DR.Read Then
Dim VAR1 As String = CStr(DR([Ô]coluna1[Ô]))
Dim VAR2 As String = CStr(DR([Ô]coluna2[Ô]))
Dim VAR3 As String = CStr(DR([Ô]coluna3[Ô]))
Dim Inserir As String
Inserir = [Ô]INSERT INTO resultado(coluna1,coluna2,coluna3) VALUES([Ô] & VAR1 & [Ô],[Ô] & VAR2 & [Ô],[Ô] & VAR3 & [Ô])[Ô]
Dim CMD As New OleDbCommand(Inserir, con)
CMD.ExecuteNonQuery()
Dim CD As New OleDbCommand()
CD.Connection = con
CD.CommandText = sql
Dim DR As OleDbDataReader = CD.ExecuteReader
If DR.Read Then
Dim VAR1 As String = CStr(DR([Ô]coluna1[Ô]))
Dim VAR2 As String = CStr(DR([Ô]coluna2[Ô]))
Dim VAR3 As String = CStr(DR([Ô]coluna3[Ô]))
Dim deletar As String
deletar = [Ô]DELETE * FROM tabela1 WHERE coluna1= [ô] [Ô] & VAR1 & [Ô] [ô] and coluna2 = [ô] [Ô] & VAR2 & [Ô] [ô] and coluna3= [ô] [Ô] & VAR3 & [Ô] [ô]
Dim DEL As New OleDbCommand(deletar, con)
DEL.ExecuteNonQuery()
End If
End If
Obrigado!
Eu não expliquei tudo para não ficar muito comprido a postagem, mas reconheço que ficou confuso, vou explicar melhor.
Tenho um bando de dados, com uma tabela que tem o nome de tabela1, quero fazer variáveis e acrescentar estes valores na tabela resultado, depois quero apagar apenas todas as linhas com estas informações pois tem linhas em duplicidade, e o loop vai funcionar até apagar a ultima linha, fazendo isto, na tabela resultado vai ficar apenas uma linha, sem repetiçoes, quando o banco de dados, tabela1, estiver todo apagado quero encerrar, segue códigos que estou usando:
Dim con = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\Banco de dados.MDB[Ô])
con.Open()
Dim sql As String = [Ô] select coluna1,coluna2,coluna3 FROM tabela1[Ô]
sql.movefirst()
If sql > 0 Then
Dim sql As String = [Ô] select coluna1,coluna2,coluna3 FROM tabela1[Ô]
Dim CD As New OleDbCommand()
CD.Connection = con
CD.CommandText = sql
Dim DR As OleDbDataReader = CD.ExecuteReader
If DR.Read Then
Dim VAR1 As String = CStr(DR([Ô]coluna1[Ô]))
Dim VAR2 As String = CStr(DR([Ô]coluna2[Ô]))
Dim VAR3 As String = CStr(DR([Ô]coluna3[Ô]))
Dim Inserir As String
Inserir = [Ô]INSERT INTO resultado(coluna1,coluna2,coluna3) VALUES([Ô] & VAR1 & [Ô],[Ô] & VAR2 & [Ô],[Ô] & VAR3 & [Ô])[Ô]
Dim CMD As New OleDbCommand(Inserir, con)
CMD.ExecuteNonQuery()
Dim CD As New OleDbCommand()
CD.Connection = con
CD.CommandText = sql
Dim DR As OleDbDataReader = CD.ExecuteReader
If DR.Read Then
Dim VAR1 As String = CStr(DR([Ô]coluna1[Ô]))
Dim VAR2 As String = CStr(DR([Ô]coluna2[Ô]))
Dim VAR3 As String = CStr(DR([Ô]coluna3[Ô]))
Dim deletar As String
deletar = [Ô]DELETE * FROM tabela1 WHERE coluna1= [ô] [Ô] & VAR1 & [Ô] [ô] and coluna2 = [ô] [Ô] & VAR2 & [Ô] [ô] and coluna3= [ô] [Ô] & VAR3 & [Ô] [ô]
Dim DEL As New OleDbCommand(deletar, con)
DEL.ExecuteNonQuery()
End If
End If
Obrigado!
Cara,
Veja se este exemplo te ajuda.
eu o fiz com apenas um valor pra deletar. No seu caso você tem três (VAR1, VAR2 e VAR3).
Se o exemplo lhe for útil, é só fazer as adaptações necessárias.
Veja se este exemplo te ajuda.
eu o fiz com apenas um valor pra deletar. No seu caso você tem três (VAR1, VAR2 e VAR3).
Se o exemplo lhe for útil, é só fazer as adaptações necessárias.
PEGUDO, Obrigado pela ajuda, estive tentando adaptar para minha aplicação o que anexou, mas não consegui ver onde informa o banco de dados, para que pegue as informações do mesmo.
Abraço,
Mário.
Abraço,
Mário.
Cara, crie um campo tipo true/false (ou qq coisa do tipo) na tabela1. faça o loop e se pegar as informações atualize o campo para true. quando terminar o loop, faça uma linha apenas com dele * from tabela1 where campo=true
1- Select para localizar duplicados
select campo,campo1,count(*)
from tabela having count(*) > 1
group by campo,campo1
2- Como deletar duplicados
delete from tab p1
where rowid < (select max(rowid)
from tab1 p2
where p1.primary_key = p2.primary_key)
3- Eliminar Dados dupliicados
select distinct * from tabela
select campo,campo1,count(*)
from tabela having count(*) > 1
group by campo,campo1
2- Como deletar duplicados
delete from tab p1
where rowid < (select max(rowid)
from tab1 p2
where p1.primary_key = p2.primary_key)
3- Eliminar Dados dupliicados
select distinct * from tabela
JABA, Consegui acertar os problemas.
Obrigado a todos!
Mário.
Obrigado a todos!
Mário.
Tópico encerrado , respostas não são mais permitidas