O QUE TA ERADO NO PROGRAMA?
Boa tarde pessoal
estou com 1 problema aqui
nao consigo fazer funcionar as opçoes
excluir
e editar , alguem poderia dar uma olhada por favor!
segue em anexo a fonte
obrigado
estou com 1 problema aqui
nao consigo fazer funcionar as opçoes
excluir
e editar , alguem poderia dar uma olhada por favor!
segue em anexo a fonte
obrigado
Muito louvável sua vontade de usar OOP, mas ainda tem um bom caminho a percorrer, vamos à s dicas:
1 - Uma vez que você criou uma classe entidade, no seu caso [Ô]Cliente[Ô], os métodos CRUD(inclusão, exclusão, edição), deve trabalhar com a própria entidade instanciada através do objeto [Ô]Me[Ô], mais ou menos assim:
Assim, no seu form você faria algo como:
E pronto, a inclusão é feita!
2 - Atente para erros de português, o cliente mais criterioso, nota este tipo de coisa e infelizmente, julga a capacidade do desenvolvedor por esse parâmetro
3 - Procure utilizar os blocos [Ô]Using[Ô], eles destroem a instância e já mandam direto para o GAC, sem você se preocupar com dispose. Um exemplo seria:
4 - Atente também para o uso correto do ADO.NET, você está usando DataAdapter pra quase tudo, o que é desnecessário na maioria dos casos
5 - Também não custa dar uma olhada em padrões de nomenclatura, como camel case e pascal case
Por hora era isso...
1 - Uma vez que você criou uma classe entidade, no seu caso [Ô]Cliente[Ô], os métodos CRUD(inclusão, exclusão, edição), deve trabalhar com a própria entidade instanciada através do objeto [Ô]Me[Ô], mais ou menos assim:
Public Sub Incluir()
Dim strConexaoOleDb As String = ConfigurationSettings.AppSettings([Ô]strConexaoBD[Ô])
Dim strSQL As String = [Ô]INSERT INTO Cliente(Nome, Endereco, loja, status, total, Email, rastreio, data, quantidade, produto)VALUES(@Nome, @Endereco, @loja, @status, @total, @Email, @rastreio, @data, @quantidade, @produto)[Ô]
Try
conexaoOleDb = Cria_Conexao_OleDb(strConexaoOleDb)
daOleDb = cria_DataAdapter_OleDb(conexaoOleDb, strSQL)
comandoOleDb = cria_Comando_OleDb(conexaoOleDb, strSQL)
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@Nome[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@Nome[Ô]).Value = Me.Nome
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@Endereco[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@Endereco[Ô]).Value = Me.Endereco
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@loja[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@loja[Ô]).Value = Me.loja
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@status[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@status[Ô]).Value = Me.status
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@total[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@total[Ô]).Value = Me.total
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@rastreio[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@rastreio[Ô]).Value = Me.rastreio
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@data[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@data[Ô]).Value = Me.data
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@quantidade[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@quantidade[Ô]).Value = Me.quantidade
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@produto[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@produto[Ô]).Value = Me.produto
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@Email[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@Email[Ô]).Value = Me.Email
comandoOleDb.ExecuteNonQuery()
conexaoOleDb.Close()
Catch mExcecao As System.Exception
mErro = mExcecao.ToString
conexaoOleDb.Close()
End Try
End Sub
Assim, no seu form você faria algo como:
dim c As New Cliente
c.Nome = txtNome.Text
c.Endereco = txtEndereco.Text
...(outras propridades)
c.Incluir()
E pronto, a inclusão é feita!
2 - Atente para erros de português, o cliente mais criterioso, nota este tipo de coisa e infelizmente, julga a capacidade do desenvolvedor por esse parâmetro
3 - Procure utilizar os blocos [Ô]Using[Ô], eles destroem a instância e já mandam direto para o GAC, sem você se preocupar com dispose. Um exemplo seria:
Public Sub Incluir()
Try
Using conexaoOleDb As New OleDbConnection(ConfigurationSettings.AppSettings([Ô]strConexaoBD[Ô]))
Using comandoOleDb As New OleDbCommand([Ô]INSERT INTO Cliente(Nome, Endereco, loja, status, total, Email, rastreio, data, quantidade, produto)VALUES(@Nome, @Endereco, @loja, @status, @total, @Email, @rastreio, @data, @quantidade, @produto)[Ô], conexaoOleDb)
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@Nome[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@Nome[Ô]).Value = Me.Nome
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@Endereco[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@Endereco[Ô]).Value = Me.Endereco
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@loja[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@loja[Ô]).Value = Me.loja
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@status[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@status[Ô]).Value = Me.status
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@total[Ô], OleDbType.VarChar, 50))
comandoOleDb.Parameters([Ô]@total[Ô]).Value = Me.total
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@rastreio[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@rastreio[Ô]).Value = Me.rastreio
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@data[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@data[Ô]).Value = Me.data
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@quantidade[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@quantidade[Ô]).Value = Me.quantidade
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@produto[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@produto[Ô]).Value = Me.produto
comandoOleDb.Parameters.Add(New OleDbParameter([Ô]@Email[Ô], OleDbType.VarChar, 100))
comandoOleDb.Parameters([Ô]@Email[Ô]).Value = Me.Email
comandoOleDb.ExecuteNonQuery()
End Using
End Using
Catch mExcecao As System.Exception
mErro = mExcecao.ToString
conexaoOleDb.Close()
End Try
End Sub
4 - Atente também para o uso correto do ADO.NET, você está usando DataAdapter pra quase tudo, o que é desnecessário na maioria dos casos
5 - Também não custa dar uma olhada em padrões de nomenclatura, como camel case e pascal case
Por hora era isso...
Vc não mandou o banco que tem essas tabelas, mas vi um ponto onde pode estar dando errado, vc esta trando data como string.
Esqueci mais uma dica importante:
5 - Use os tipos de dados corretos, quando data, use DateTime, quando número, o tipo numérico apropriado(inteiro, double...). O uso de dados tudo como string(varchar), gera muitos problemas.
5 - Use os tipos de dados corretos, quando data, use DateTime, quando número, o tipo numérico apropriado(inteiro, double...). O uso de dados tudo como string(varchar), gera muitos problemas.
Ate agradeço mas nao entendi nada !
A parte de incluir ta normal , funciona beleza
so a parte de exluir e editar que não da certo! :(
A parte de incluir ta normal , funciona beleza
so a parte de exluir e editar que não da certo! :(
Citação:Ate agradeço mas nao entendi nada !
Ao invés de:Public Property Data as String
Use Public Property Data as Date
Quanto ao Me.Nome por exemplo
Vc não precisa passar parametros para a função na sua classe, já que vc já criou as propriedas dela.
oCliente.incluirNovoCliente(TxtNome.Text, TxtEndereco.Text, rastreio.Text, data.Text, quantidade.Text, produto.Text, Txtloja.Text, cbostatus.Text, Txttotal.Text, txtEmail.Text)
KERPLUNK
Citação:dim c As New Cliente
c.Nome = txtNome.Text
c.Endereco = txtEndereco.Text
...(outras propridades)
c.Incluir()
Fica muito mais orgazinazado e facil de implementar.
Ta legal isso ja entendi
Mas o meu problema nao e incluir nada
isso funciona tudo certo
ele inclui certo e consigo ver o que incluiu
o meu problema
e
APAGAR
EDITAR
nessa parte que nao da certo
incluir isso nao precisa isso funciona normal!
Mas o meu problema nao e incluir nada
isso funciona tudo certo
ele inclui certo e consigo ver o que incluiu
o meu problema
e
APAGAR
EDITAR
nessa parte que nao da certo
incluir isso nao precisa isso funciona normal!
:( Alguem?
Cara,
Se o teu exemplo em anexo, realmente, é a cópia fiel do teu programa, então você nunca vai conseguir mesmo.
1º - Você nunca vai deletar nada porque a coluna da sua tabela, onde ficam os nomes dos clientes, não é [Ô]Cliente[Ô] e sim [Ô]ClienteNome[Ô];
2º - A mesma coisa acontece com UPDATE. Como o programa vai modificar uma coluna que não existe? No seu exemplo (em anexo), o BD só tem as colunas:ClienteID, ClienteNome, Endereco, Cidade, Estado e Fone. Você nunca vai atualizar um cliente pela coluna [Ô]Código[Ô] se, na sua tabela, a coluna chama-se [Ô]ClienteID[Ô].
O certo seria: [Ô]UPDATE Cliente SET ClienteNome=[ô][Ô] & Nome & [Ô][ô], Endereco=[ô][Ô] & ClienteEndereco & [Ô][ô] WHERE ClienteID=[Ô] & Codigo
Observação: Quando a variável final for do tipo numérica não precisa fechar a String com aspas, como você fez. Veja, acima, que retirei as aspas do final.
Outra coisa: Evite fazer a verificação assim: [txt-color=#0000f0]If conexaoOleDb.State.Open Then...[/txt-color] Faça assim: [txt-color=#0000f0]If conexaoOleDb.State = ConnectionState.Open Then...[/txt-color]
Se o teu exemplo em anexo, realmente, é a cópia fiel do teu programa, então você nunca vai conseguir mesmo.
1º - Você nunca vai deletar nada porque a coluna da sua tabela, onde ficam os nomes dos clientes, não é [Ô]Cliente[Ô] e sim [Ô]ClienteNome[Ô];
2º - A mesma coisa acontece com UPDATE. Como o programa vai modificar uma coluna que não existe? No seu exemplo (em anexo), o BD só tem as colunas:ClienteID, ClienteNome, Endereco, Cidade, Estado e Fone. Você nunca vai atualizar um cliente pela coluna [Ô]Código[Ô] se, na sua tabela, a coluna chama-se [Ô]ClienteID[Ô].
O certo seria: [Ô]UPDATE Cliente SET ClienteNome=[ô][Ô] & Nome & [Ô][ô], Endereco=[ô][Ô] & ClienteEndereco & [Ô][ô] WHERE ClienteID=[Ô] & Codigo
Observação: Quando a variável final for do tipo numérica não precisa fechar a String com aspas, como você fez. Veja, acima, que retirei as aspas do final.
Outra coisa: Evite fazer a verificação assim: [txt-color=#0000f0]If conexaoOleDb.State.Open Then...[/txt-color] Faça assim: [txt-color=#0000f0]If conexaoOleDb.State = ConnectionState.Open Then...[/txt-color]
Tópico encerrado , respostas não são mais permitidas