View Full Version : Como navegar pelos registros de uma tabela e deletar?


Eliana Bigosinski
09-07-2006, 10:36 PM
Olá pessoal

Sou iniciante em .NETCF e já consegui fazer bastante coisa relacionadas com
tabelas de dados, porém, estou com uma dúvida no qual ainda não consegui
encontrar nenhuma informação que me ajudasse.

Tenho uma tabela e desejo "navegar" por ela sequenciamente, ou seja, ficar
"andando" registro a registro para eu fazer uma determinada comparação. Se
esta comparação for verdadeira, desejo excluir o registro. Alguém pode
auxiliar-me com dúvida?

Com o eVB era fácil, eu abria a tabela e através de um laço While Not
RecordSet.EOF / RecordSet.MoveNext / Wend eu conseguia fazer isso, comparar
e excluir, mas no NETCF + VB.NET não encontrei uma forma para fazer isso.

Já tentei abrir a tabela usando SqlServerCE.SqlDataReader mais não achei
nenhuma forma de deletar o registro. Já tentei também com este código e não
consegui também. Qualquer ajuda será bem vinda! Grata.
Dim strSQL As String = "SELECT CLI_CODCLIENTE,CLI_RAZAOSOCIAL FROM CLIENTE
ORDER BY CLI_CODCLIENTE;"

Dim strCod As String = ""

Dim strDes As String = ""

Dim intInd As Integer = 0

Dim adpAdapt As New System.Data.SqlServerCe.SqlCeDataAdapter(strSQL,
cnxConexao)

Dim dstVisita As New DataSet

Try

adpAdapt.SelectCommand.CommandText = strSQL

adpAdapt.Fill(dstVisita, "CLIENTE")

For intInd = 0 To (dstVisita.Tables("CLIENTE").Rows.Count - 1)

If strCod <>
dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_CODCLIENTE") Then

strCod =
dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_CODCLIENTE")

strDes =
dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_RAZAOSOCIAL")

Else

dstVisita.Tables("CLIENTE").Rows(intInd).Delete()

'adpAdapt.Update(dstVisita, "CLIENTE") ---> tive que colocar um
comentário porque dava erro aqui

dstVisita.Tables("CLIENTE").AcceptChanges()

End If

Next

adpAdapt.Dispose()

Catch err As System.Data.SqlServerCe.SqlCeException

MessageBox.Show(err.Message)

Catch ex As Exception

MessageBox.Show(err.Description)

Finally

adpAdapt = Nothing

dstVisita = Nothing

End Try

cezarantoniosouza@yahoo.com.br
09-08-2006, 08:13 PM
Olá.
Se você estiver utilizando o Visual Studio 2005, há um exemplo, que
mostra mais ou menos isso que você precisa neste link :
http://msdn.microsoft.com/vbasic/downloads/code/101samples/

Vá em .net Compact FrameWork Samples.

O nome do exemplo é SQLResultSetSample , ele mostra como navegar entre
os registros e como deletar um separadamente.
Espero que ajude.

Cézar


Eliana Bigosinski escreveu:

> Olá pessoal
>
> Sou iniciante em .NETCF e já consegui fazer bastante coisa relacionadascom
> tabelas de dados, porém, estou com uma dúvida no qual ainda não consegui
> encontrar nenhuma informação que me ajudasse.
>
> Tenho uma tabela e desejo "navegar" por ela sequenciamente, ou seja, ficar
> "andando" registro a registro para eu fazer uma determinada comparação. Se
> esta comparação for verdadeira, desejo excluir o registro. Alguém pode
> auxiliar-me com dúvida?
>
> Com o eVB era fácil, eu abria a tabela e através de um laço While Not
> RecordSet.EOF / RecordSet.MoveNext / Wend eu conseguia fazer isso, comparar
> e excluir, mas no NETCF + VB.NET não encontrei uma forma para fazer isso.
>
> Já tentei abrir a tabela usando SqlServerCE.SqlDataReader mais não achei
> nenhuma forma de deletar o registro. Já tentei também com este código e não
> consegui também. Qualquer ajuda será bem vinda! Grata.
> Dim strSQL As String = "SELECT CLI_CODCLIENTE,CLI_RAZAOSOCIAL FROM CLIENTE
> ORDER BY CLI_CODCLIENTE;"
>
> Dim strCod As String = ""
>
> Dim strDes As String = ""
>
> Dim intInd As Integer = 0
>
> Dim adpAdapt As New System.Data.SqlServerCe.SqlCeDataAdapter(strSQL,
> cnxConexao)
>
> Dim dstVisita As New DataSet
>
> Try
>
> adpAdapt.SelectCommand.CommandText = strSQL
>
> adpAdapt.Fill(dstVisita, "CLIENTE")
>
> For intInd = 0 To (dstVisita.Tables("CLIENTE").Rows.Count - 1)
>
> If strCod <>
> dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_CODCLIENTE") Then
>
> strCod =
> dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_CODCLIENTE")
>
> strDes =
> dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_RAZAOSOCIAL")
>
> Else
>
> dstVisita.Tables("CLIENTE").Rows(intInd).Delete()
>
> 'adpAdapt.Update(dstVisita, "CLIENTE") ---> tive que colocar um
> comentário porque dava erro aqui
>
> dstVisita.Tables("CLIENTE").AcceptChanges()
>
> End If
>
> Next
>
> adpAdapt.Dispose()
>
> Catch err As System.Data.SqlServerCe.SqlCeException
>
> MessageBox.Show(err.Message)
>
> Catch ex As Exception
>
> MessageBox.Show(err.Description)
>
> Finally
>
> adpAdapt = Nothing
>
> dstVisita = Nothing
>
> End Try

Eliana Bigosinski
09-09-2006, 12:10 AM
Grata Cesar.

Vou acessar e ler este artigo.

<cezarantoniosouza@yahoo.com.br> escreveu na mensagem
news:1157742836.049690.108830@e3g2000cwe.googlegroups.com...
Olá.
Se você estiver utilizando o Visual Studio 2005, há um exemplo, que
mostra mais ou menos isso que você precisa neste link :
http://msdn.microsoft.com/vbasic/downloads/code/101samples/

Vá em .net Compact FrameWork Samples.

O nome do exemplo é SQLResultSetSample , ele mostra como navegar entre
os registros e como deletar um separadamente.
Espero que ajude.

Cézar


Eliana Bigosinski escreveu:

> Olá pessoal
>
> Sou iniciante em .NETCF e já consegui fazer bastante coisa relacionadas
> com
> tabelas de dados, porém, estou com uma dúvida no qual ainda não consegui
> encontrar nenhuma informação que me ajudasse.
>
> Tenho uma tabela e desejo "navegar" por ela sequenciamente, ou seja, ficar
> "andando" registro a registro para eu fazer uma determinada comparação. Se
> esta comparação for verdadeira, desejo excluir o registro. Alguém pode
> auxiliar-me com dúvida?
>
> Com o eVB era fácil, eu abria a tabela e através de um laço While Not
> RecordSet.EOF / RecordSet.MoveNext / Wend eu conseguia fazer isso,
> comparar
> e excluir, mas no NETCF + VB.NET não encontrei uma forma para fazer isso.
>
> Já tentei abrir a tabela usando SqlServerCE.SqlDataReader mais não achei
> nenhuma forma de deletar o registro. Já tentei também com este código e
> não
> consegui também. Qualquer ajuda será bem vinda! Grata.
> Dim strSQL As String = "SELECT CLI_CODCLIENTE,CLI_RAZAOSOCIAL FROM CLIENTE
> ORDER BY CLI_CODCLIENTE;"
>
> Dim strCod As String = ""
>
> Dim strDes As String = ""
>
> Dim intInd As Integer = 0
>
> Dim adpAdapt As New System.Data.SqlServerCe.SqlCeDataAdapter(strSQL,
> cnxConexao)
>
> Dim dstVisita As New DataSet
>
> Try
>
> adpAdapt.SelectCommand.CommandText = strSQL
>
> adpAdapt.Fill(dstVisita, "CLIENTE")
>
> For intInd = 0 To (dstVisita.Tables("CLIENTE").Rows.Count - 1)
>
> If strCod <>
> dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_CODCLIENTE") Then
>
> strCod =
> dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_CODCLIENTE")
>
> strDes =
> dstVisita.Tables("CLIENTE").Rows(intInd).Item("CLI_RAZAOSOCIAL")
>
> Else
>
> dstVisita.Tables("CLIENTE").Rows(intInd).Delete()
>
> 'adpAdapt.Update(dstVisita, "CLIENTE") ---> tive que colocar
> um
> comentário porque dava erro aqui
>
> dstVisita.Tables("CLIENTE").AcceptChanges()
>
> End If
>
> Next
>
> adpAdapt.Dispose()
>
> Catch err As System.Data.SqlServerCe.SqlCeException
>
> MessageBox.Show(err.Message)
>
> Catch ex As Exception
>
> MessageBox.Show(err.Description)
>
> Finally
>
> adpAdapt = Nothing
>
> dstVisita = Nothing
>
> End Try