Refresh DataSet tipado
Prezados;
Como comentei em outros chamdos, estou desenvolvendo uma aplicação web utilizando o conceito de camadas, agora estou com um problema: em alguns casos após criar o meu DataSet (Wizard) faz-se necessário alterar a estrutura da minha tabela do banco de dados, e nestes casos preciso atualizar meu DataSet, sendo que não estou conseguindo fazer isso.
Ex.:
Tabela: tbAluno
Campos: Nome, endereço, telefone.
Criei meu DataSet utilizando a tabela acima.
Após criar observei que preciso da filiação do aluno, então a minha tabela ficará assim:
Tabela: tbAluno
Campos: Nome, endereço, telefone, nome_pai, nome_mae.
Agora preciso atualizar meu DataSet (Refresh), como faço isso?
Indemberge
Indemberge Santos
Curtidas 0
Respostas
Fabio Mans
23/06/2009
Você tem que incluir o campo no Select e atualizar o DataSet. Você não gosta de codificar?
Fabio
GOSTEI 0
Indemberge Santos
23/06/2009
Fábio, tudo bem?
Bem eu gosto muito de codificar, já programei muito em Clipper e ainda possuo uma aplicação rodando que foi desenvolvida usando esta linguagem com banco de dados dbase.
Programo também em Vb6 e a conexão com o banco de dados é na mão, pelo menos eu não aprendi a fazer pelo wizard.
O problema é que quando resolvi programar para web, aprendi o conceito de camadas em um curso que fiz, lá ensinaram a criar o DataSet pelo Wizard, e eu gostei, achei interessante.
Então devido a este fato estou criando meus DataSets todos pelo Wizard, mas se existir um bom motivo para eu codificar eu mudo de método.
Indemberge
GOSTEI 0
Fabio Mans
23/06/2009
Olá eu acho importante, você pode criar seus próprios métodos que retornam DataTable ou um List<> para preencher seus controles.
Vou te ajudar.
Primeiro crie uma classe e adicione o métodos abaixo. Mude os itens em negrito para os seus dados.
Depois adicine uma GridView que chame este dataset e vamos ver se dar certo.
public static DataSet NomeMetodo(int CategoriaID) //Caso precise de parâmetros.
{
DataSet ds = new DataSet("Categoria");
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString))
{
string sql = "manual_Documentos_ListaDocumentosID"; //Nome da sua Prc.
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID); //Se precisar de parâmetros
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
}
return ds;
}
GridView1.DataSource = NomeMetodo(11);
GridView1.DataBind();
Caso não queira fazer o procedimento acima e deseje continuar utilizando o Wizard me fale, assim podemos continuar o chamado normalmente.
Fabio
Vou te ajudar.
Primeiro crie uma classe e adicione o métodos abaixo. Mude os itens em negrito para os seus dados.
Depois adicine uma GridView que chame este dataset e vamos ver se dar certo.
public static DataSet NomeMetodo(int CategoriaID) //Caso precise de parâmetros.
{
DataSet ds = new DataSet("Categoria");
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString))
{
string sql = "manual_Documentos_ListaDocumentosID"; //Nome da sua Prc.
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID); //Se precisar de parâmetros
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
}
return ds;
}
GridView1.DataSource = NomeMetodo(11);
GridView1.DataBind();
Caso não queira fazer o procedimento acima e deseje continuar utilizando o Wizard me fale, assim podemos continuar o chamado normalmente.
Fabio
GOSTEI 0
Indemberge Santos
23/06/2009
Fábio;
Vou fazer um teste utilizando o exemplo que me enviou, gostei.
Uso atualmente em minha aplicação o ACCESS 2000 e pretendo mudar para o SQL EXPRESS, criando os DataSets da forma que me ensinou tenho mais liberdade e posso até pensar em usar o MySql.
Contudo na aplicação atual existem vários DataSets e várias query criadas que não posso abondonar, preciso cuidar delas.
Tenho uma consulta que faz uma pesquisa no meu banco de dados e retorna o nome dos alunos, o problema é que alguns alunos não são retornados para o meu grid e descobri que o problema esta no DataSet, acreditava que era devido as alterações na estrutura das tabelas, mas após corrigir o select contido no meu DataSet o problema persiste (fiz isso hoje após receber a sua orientação).
Amanhã vou Debugar a aplicação e vou ver em que linha esta dando o erro, e retorno.
Um abraço;
Indemberge
GOSTEI 0
Fabio Mans
23/06/2009
Você vai achar bem melhor trabalhar assim, com o tempo você cria as suas classes, cria os métodos e pode contar comigo para te explicar.
Abraços
GOSTEI 0
Devmedia
23/06/2009
Indembergue,
a solução do consultor resolveu seu problema? podemos encerrar o chamado?
a solução do consultor resolveu seu problema? podemos encerrar o chamado?
GOSTEI 0
Devmedia
23/06/2009
Indembergue,
por falta de retorno estamos colocando o seu chamado como concluído.
Caso ainda tenha alguma dúvida sobre o assunto desse chamado, post aqi q o consultor voltará a lhe atender.
por falta de retorno estamos colocando o seu chamado como concluído.
Caso ainda tenha alguma dúvida sobre o assunto desse chamado, post aqi q o consultor voltará a lhe atender.
GOSTEI 0
Indemberge Santos
23/06/2009
Prezados;
Não respondi devido problemas na conexão com a internet aqui da empresa, usamos Net Vírtua...
Como passo esse código para VB.NET?
public static DataSet NomeMetodo(int CategoriaID) //Caso precise de parâmetros.
{
DataSet ds = new DataSet("Categoria");
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString))
{
string sql = "manual_Documentos_ListaDocumentosID"; //Nome da sua Prc.
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID); //Se precisar de parâmetros
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
}
return ds;
}
Usuando o DataSet que estou criando pelo wizard faço assim em minha classe: Public Overloads Function ObterAlunoCodigo(ByVal CodAluno As String) As DSAluno.tbAlunoDataTable
Dim AlunoAdapter As New DSAlunoTableAdapters.tbAlunoTableAdapter
'ObterAlunoCodigo é uma query que criei em meu DataSet, um select que trará os dados do aluno de 'acordo com o código do aluno fornecido. Return AlunoAdapter.ObterAlunoCodigo(CodAluno)
End Function Com respeito a atualização do DataSet, consegui resolver como me orientou, atualizei o meu select no DataSet tipado. Obrigado. Indemberge
{
DataSet ds = new DataSet("Categoria");
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString))
{
string sql = "manual_Documentos_ListaDocumentosID"; //Nome da sua Prc.
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID); //Se precisar de parâmetros
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
}
return ds;
}
Usuando o DataSet que estou criando pelo wizard faço assim em minha classe: Public Overloads Function ObterAlunoCodigo(ByVal CodAluno As String) As DSAluno.tbAlunoDataTable
Dim AlunoAdapter As New DSAlunoTableAdapters.tbAlunoTableAdapter
'ObterAlunoCodigo é uma query que criei em meu DataSet, um select que trará os dados do aluno de 'acordo com o código do aluno fornecido. Return AlunoAdapter.ObterAlunoCodigo(CodAluno)
End Function Com respeito a atualização do DataSet, consegui resolver como me orientou, atualizei o meu select no DataSet tipado. Obrigado. Indemberge
GOSTEI 0
Fabio Mans
23/06/2009
Olá sempre que você precisar converter utilize o link abaixo.
http://www.developerfusion.com/tools/convert/csharp-to-vb/
Public Shared Function NomeMetodo(ByVal CategoriaID As Integer) As DataSet
Dim ds As New DataSet("Categoria")
Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("cnnString").ConnectionString)
Dim sql As String = "manual_Documentos_ListaDocumentosID"
'Nome da sua Prc.
Using cmd As New SqlCommand(sql, connection)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID)
'Se precisar de parâmetros
Dim da As New SqlDataAdapter(cmd)
da.Fill(ds)
End Using
End Using
Return ds
End Function
Está conseguindo utilizar criando o dataset?
======================================================================
Prezados; Não respondi devido problemas na conexão com a internet aqui da empresa, usamos Net Vírtua... Como passo esse código para VB.NET?
public static DataSet NomeMetodo(int CategoriaID) //Caso precise de parâmetros.
{
DataSet ds = new DataSet("Categoria");
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString))
{
string sql = "manual_Documentos_ListaDocumentosID"; //Nome da sua Prc.
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID); //Se precisar de parâmetros
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
}
return ds;
}
Usuando o DataSet que estou criando pelo wizard faço assim em minha classe: Public Overloads Function ObterAlunoCodigo(ByVal CodAluno As String) As DSAluno.tbAlunoDataTable
Dim AlunoAdapter As New DSAlunoTableAdapters.tbAlunoTableAdapter
'ObterAlunoCodigo é uma query que criei em meu DataSet, um select que trará os dados do aluno de 'acordo com o código do aluno fornecido. Return AlunoAdapter.ObterAlunoCodigo(CodAluno)
End Function Com respeito a atualização do DataSet, consegui resolver como me orientou, atualizei o meu select no DataSet tipado. Obrigado. Indemberge
http://www.developerfusion.com/tools/convert/csharp-to-vb/
Public Shared Function NomeMetodo(ByVal CategoriaID As Integer) As DataSet
Dim ds As New DataSet("Categoria")
Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("cnnString").ConnectionString)
Dim sql As String = "manual_Documentos_ListaDocumentosID"
'Nome da sua Prc.
Using cmd As New SqlCommand(sql, connection)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID)
'Se precisar de parâmetros
Dim da As New SqlDataAdapter(cmd)
da.Fill(ds)
End Using
End Using
Return ds
End Function
Está conseguindo utilizar criando o dataset?
======================================================================
Prezados; Não respondi devido problemas na conexão com a internet aqui da empresa, usamos Net Vírtua... Como passo esse código para VB.NET?
public static DataSet NomeMetodo(int CategoriaID) //Caso precise de parâmetros.
{
DataSet ds = new DataSet("Categoria");
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString))
{
string sql = "manual_Documentos_ListaDocumentosID"; //Nome da sua Prc.
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CategoriaID", CategoriaID); //Se precisar de parâmetros
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
}
return ds;
}
Usuando o DataSet que estou criando pelo wizard faço assim em minha classe: Public Overloads Function ObterAlunoCodigo(ByVal CodAluno As String) As DSAluno.tbAlunoDataTable
Dim AlunoAdapter As New DSAlunoTableAdapters.tbAlunoTableAdapter
'ObterAlunoCodigo é uma query que criei em meu DataSet, um select que trará os dados do aluno de 'acordo com o código do aluno fornecido. Return AlunoAdapter.ObterAlunoCodigo(CodAluno)
End Function Com respeito a atualização do DataSet, consegui resolver como me orientou, atualizei o meu select no DataSet tipado. Obrigado. Indemberge
GOSTEI 0
Devmedia
23/06/2009
Indembergue,
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
GOSTEI 0
Devmedia
23/06/2009
Indembergue,
por falta de retorno estamos encerrando o chamado. Caso ainda tenha dúvidas sobre o assunto desse post, por favor, volte a postar aqui mesmo que o consultor voltará a lhe antender.
por falta de retorno estamos encerrando o chamado. Caso ainda tenha dúvidas sobre o assunto desse post, por favor, volte a postar aqui mesmo que o consultor voltará a lhe antender.
GOSTEI 0