LOOP PARA APAGAR LINHAS

MARIOBOARI 19/02/2013 00:28:45
#419322
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.
PEGUDO 19/02/2013 12:23:55
#419345
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].
JABA 19/02/2013 12:32:17
#419346
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 & [Ô] [ô] [Ô]
MARIOBOARI 19/02/2013 19:19:52
#419370
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!
PEGUDO 20/02/2013 08:33:12
#419385
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.
MARIOBOARI 20/02/2013 23:03:04
#419452
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.
PEGUDO 21/02/2013 07:46:27
#419457
TOMPRATA 22/02/2013 17:24:53
#419552
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
JABA 23/02/2013 23:06:38
#419567
Resposta escolhida
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
MARIOBOARI 24/02/2013 08:27:11
#419575
JABA, Consegui acertar os problemas.

Obrigado a todos!

Mário.
Tópico encerrado , respostas não são mais permitidas