HELP COM ESSE DO WHILE PLEASE?

MESTRE 05/12/2014 07:44:08
#443001
Oi pessoal beleza, então não estou conseguindo fazer um negócio, eu tenho uma tabela chamada wmoddetprod, que possuem varios códigos,
ai preciso pegar e salvar todos esses códigos em outra tabela ai fiz a estrutura abaixo:

     Try
Dim sql As String
sql = [Ô]SELECT CODIGO FROM wmoddetprod[Ô]
objConexao.Open()

Dim objMysqlCommand As New MySqlCommand(sql, objConexao)
Dim reader As MySqlDataReader = objMysqlCommand.ExecuteReader()


If (reader.Read()) Then


Do While reader.Read
Codigo = reader!Codigo
sql = [Ô]INSERT INTO z_parametros(codigo) VALUES([ô][Ô] & Codigo & [Ô][ô])[Ô]
Banco.ExecutaQuery(sql)

Loop
reader.NextResult()

End If
AtualizarProgress.Caption = [Ô]Dados Atualizados com Sucesso![Ô]
AtualizarProgress.Description = [Ô]Os Códigos dos Ensaios foram Atualizados![Ô]

Catch ex As Exception

Finally
objConexao.Close()
End Try


Só que o que não estou conseguindo fazer é para quando o código ja existir lá na tabela z_parametros ele não duplique, resumindo que ele saia do insert e pule pro próximo registro reader.NextResult e pular o Insert.. como devo proceder?? agradeço
TUNUSAT 05/12/2014 09:04:31
#443005
Mestre,

Depois de
Codigo = reader!Codigo

E Antes de:
sql = [Ô]INSERT INTO z_parametros(codigo) VALUES([ô][Ô] & Codigo & [Ô][ô])[Ô]
Banco.ExecutaQuery(sql)


Você precisa fazer algo do tipo:
sqlApoio = [Ô]SELECT top 1 codigo FROM z_parametros WHERE codigo = [Ô] & codigo


Para verificar se NÃO retorna nenhum registro antes de gravar.
Se retornar, pule com um IF este pedaço:
sql = [Ô]INSERT INTO z_parametros(codigo) VALUES([ô][Ô] & Codigo & [Ô][ô])[Ô]
Banco.ExecutaQuery(sql)



[][ô]s,
Tunusat.
MESTRE 05/12/2014 15:25:46
#443018
opa Tunusat vlw mais como recebo os dados depois do select estou tentando criar um 2° data reader mais nao ta indo nao

tentei assim
  
Dim reader As MySqlDataReader = objMysqlCommand.ExecuteReader()
Dim reader2 As MySqlDataReader = objMysqlCommand2.ExecuteReader


Do While reader.Read

Codigo = reader!Codigo

sql2 = [Ô]SELECT codigo FROM z_parametros WHERE codigo = [ô][Ô] & Codigo & [Ô][ô][Ô]
Banco.ExecutaQuery2(sql2)
If Not reader2.Read() Then

sql = [Ô]INSERT INTO z_parametros(codigo) VALUES([ô][Ô] & Codigo & [Ô][ô])[Ô]
Banco.ExecutaQuery(sql)

End If

Loop

reader.NextResult()
LVFIOROT 05/12/2014 20:37:12
#443024
precisa ser assim mesmo?
Pq nao faz isso em um procedimento só? um
insert select!

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

FILMAN 05/12/2014 22:00:14
#443025
Resposta escolhida
Tente isso

Try
Dim sql As String = [Ô][Ô]

sql &= [Ô]INSERT INTO Z_PARAMETROS (CODIGO)[Ô]
sql &= [Ô] SELECT A.CODIGO[Ô]
sql &= [Ô] FROM WMODDETPROD A[Ô]
sql &= [Ô] LEFT JOIN Z_PARAMETROS B ON (B.CODIGO = A.CODIGO)[Ô]
sql &= [Ô] WHERE B.CODIGO IS NULL[Ô]
sql &= [Ô] ORDER BY A.CODIGO[Ô] [ô]Caso queira ordenar os códigos

objConexao.Open()

Dim objMysqlCommand As New MySqlCommand(sql, objConexao)
Dim LinhasAfetadas As Long = objMysqlCommand.ExecuteNonQuery()

If LinhasAfetadas > 0 Then
AtualizarProgress.Caption = [Ô]Dados Atualizados com Sucesso![Ô]
AtualizarProgress.Description = [Ô]Os Códigos dos Ensaios foram Atualizados![Ô]
Else
AtualizarProgress.Caption = [Ô]Dados não atualizados devido não encontrar nenhum código novo![Ô]
AtualizarProgress.Description = [Ô]Códigos não encontrados![Ô]
End If

Catch ex As Exception
MessageBox.Show([Ô]Erro:[Ô] & Environment.NewLine() & ex.Message(), [Ô]Erro[Ô])
Finally
objConexao.Close()
End Try
TUNUSAT 06/12/2014 09:03:56
#443030
FILMAN,

Bem melhor! Valew!

[][ô]s,
Tunusat.
MESTRE 09/12/2014 10:39:18
#443078
valeu galera voces sao demais
Tópico encerrado , respostas não são mais permitidas