
Xistyle
Membros-
Total de itens
355 -
Registro em
-
Última visita
Tudo que Xistyle postou
-
Transformando Célula do GRID(com valores do banco) em ComboBoxCell
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
Ai complica cara... montei um projetinho simples com todas as configurações padrões. Fiz um SELECT e atribui o retorno dele como DataSource da minha Grid. Depois criei uma DataGridViewComboBoxColumn, adicionei os itens a ela e adicionei a coluna à Grid. Funcionou normalmente. Poderia ter sido alguma configuração da sua grid? Dê uma verificada nas propriedades. -
Transformando Célula do GRID(com valores do banco) em ComboBoxCell
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
Toda vez que você clica em um nó da sua TreeView, sua DataGridView deverá ser recarregada. Pode existir alguma "sujeira" que não libera a visualização dos itens do ComboBox. Tente definir como NULL o DataSource e depois atribuí-lo, carregando com os dados do nó clicado. Depois execute novamente o for each que usou para percorrer as linhas e apontar o item correspondente do ComboBox. Se possível também implemente a adição dos itens via código. Com isso, quando recarregar a grid, poderá adicionar novamente a coluna e seus respectivos itens. -
Acho que sim! :D Acredito que deveria estar usando um outro ambiente de desenvolvimento com C# que possuia outra opção para compilar Unsafe Code.
-
Transformando Célula do GRID(com valores do banco) em ComboBoxCell
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
Desculpa Lucas. Fiquei sem internet ontem e não deu pra responder mais cedo. Você criou então o CheckBoxColumn, populou ele manualmente com os 3 tipos (Alta, Média, Baixa) e depois só comparou com o que está na coluna invisível? (usando aquele .Items.Add para popular e depois comparando o texto que está na coluna invisível para atribuir qual será o índice do seu combobox). Levando em consideração o post que colocou o código, a primeira parte tá legal. A segunda, você poderia ter otimizado melhor o código. Segue um exemplo (só precisa ver direitinho os índices das colunas, se dá pra achar um ponto em comum): //Laço para percorrer todas as linhas do DataGridView foreach (DataGridViewRow dr in gv_tarefas.Rows) { //Condição para coluna prioridade, se for = 0 a prioridade é baixa if (dr.Cells[3].Value.ToString() == "0") { strTexto = "Baixa"; corBack = Color.Green; corFore = Color.White; } //Condição para coluna prioridade, se for = 1 a prioridade é Média else if (dr.Cells[3].Value.ToString() == "1") { strTexto = "Média"; corBack = Color.Yellow; corFore = Color.Black; } //Condição para coluna prioridade, se for = 2 a prioridade é alta else if (dr.Cells[3].Value.ToString() == "2") { strTexto = "Média"; corBack = Color.Yellow; corFore = Color.Black; } else { return; } //Status Fechado if (dr.Cells[5].Value.ToString() == "0") { dr.Cells[3].DataGridView[3, cont].Value = strTexto; gv_tarefas.Rows[cont].Cells[3].Style.BackColor = corBack; gv_tarefas.Rows[cont].Cells[3].Style.ForeColor = corFore; dr.Cells[5].DataGridView[5, cont].Value = "Fechado"; } //Status Aberto else { dr.Cells[3].DataGridView[3, cont].Value = strTexto; gv_tarefas.Rows[cont].Cells[3].Style.BackColor = corBack; gv_tarefas.Rows[cont].Cells[3].Style.ForeColor = corFore; dr.Cells[5].DataGridView[5, cont].Value = "Aberto"; } -
Não entendi Tiago. C# só existe uma linguagem. Você deve estar falando do ambiente de desenvolvimento. Deseja saber se há alguma opção de Unsafe Code para o Visual Studio? Não ficou clara sua dúvida.
-
Transformando Célula do GRID(com valores do banco) em ComboBoxCell
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
Coloque seu código de carregamento da grid. Fica mais fácil montar usando os nomes dos seus objetos :) -
O C# reconhece algumas palavras chaves como própria, para uso do compilador. Entre elas, existem algumas como \n, \t. Toda vez que for usar uma string que contenha essa barra (\), ou use-a duplicada ou coloque uma @ no início da string: static string mycon = @"Data Source=SNSWS20\servidor;Initial Catalog=db_cadastro_aluno;Integrated Security=True"; ou static string mycon = "Data Source=SNSWS20\\servidor;Initial Catalog=db_cadastro_aluno;Integrated Security=True";
-
public class dados { //Construtor dados() { string mycon = "Data Source=SNSWS20\servidor;Initial Catalog=db_cadastro_aluno;Integrated Security=True"; SqlConnection sqlconn = new SqlConnection(mycon); } private void conecta() { sqlconn.Open(); } private void disconecta() { sqlconn.Close(); sqlconn.Dispose(); } }
-
Transformando Célula do GRID(com valores do banco) em ComboBoxCell
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
É, vai retornar mais mesmo no subselect. Achei que tendo um ComboBoxColumn ele iria tratar. Bom vai ter que alimentá-lo manualmente. Continue com o seu SELECT inicial, crie a coluna e depois alimente-a com o método .Items.AddRange("Alta", "Média", "Baixa"); Ai faça a comparação do que está na coluna invisível com o item do combo para exibição. Poste o erro também que está ocorrendo do Fill. -
Legal Paulo! Só não precisa instanciar novamente a conexão para desconectá-la. Aí você cria o objeto conexão como variável no escopo da classe, e não do método. Ficaria assim: public class dados { string mycon = "Data Source=SNSWS20\servidor;Initial Catalog=db_cadastro_aluno;Integrated Security=True"; SqlConnection sqlconn = new SqlConnection(mycon); private void conecta() { sqlconn.Open(); } private void disconecta() { sqlconn.Close(); sqlconn.Dispose(); } } É necessário isso pois você iria trabalhar com dois objetos diferentes: um que teve a conexão aberta com o Open e outro que não teve conexão aberta. Quando você desse o Close, geraria uma exceção. Tendo seu objeto de conexão pronto, vou dar a idéia do INSERT/UPDATE/DELETE e deixar o Select contigo. //O método precisa ser público, ao contrário dos de conexão, que serão acessados somente pela classe. public void ExecutaAcao(string sSQL) { SqlCommand cmd = New SqlCommand(); try { cmd.Connection = sqlconn; conecta(); cmd.CommandText = sSQL; cmd.ExecuteNonQuery(); } catch (Exception exc) { //Como você está trabalhando com camadas (apresentação e dados nesse caso) não é viável você abrir um MessageBox por aqui. Portanto, o throw envia a mensagem abaixo para o método que chamou este método ExecutaAcao, que está no seu Form. Assim, você consegue separar bem as bibliotecas que suas classes irão usar (nesse caso, para colocar um MessageBox nessa classe de conexão, você teria que importar uma biblioteca específica para abrir os MessageBoxes). throw new Exception("Ocorreu o seguinte erro ao executar uma ação no banco: \n" + exc); } finally { disconecta() } } Lembrando que para o SELECT, você terá um método que retorna um objeto com seus dados (pode ser um DataTable).
-
Tá faltando um parênteses no final de Integrated Security=True);
-
Transformando Célula do GRID(com valores do banco) em ComboBoxCell
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
Opa se esclareceu :D Mas ai você pode fazer o seguinte. Aparentemente o campo Prioridade não é uma tabela a parte, é apenas uma string na sua tabela. Você pode fazer assim então: 1) Carregue seu DataGrid, como está fazendo 2) Defina sua coluna Prioridade como Visible = False 3) Você irá criar uma nova coluna, do tipo DataGridViewComboBoxColumn e adicionará a grid com o seguinte comando: gv_tarefas.Columns.Add(meuComboBoxColumn); 4) Você mudará o seu SELECT: "SELECT Tarefa.tarefa_desc as Tarefa, Tarefa.prioridade as Prioridade, Tarefa.duracao as Tarefa.status as Status, TAREFA.id " + " (SELECT 'Alta', 'Média', 'Baixa') As Prioridade_Combo " + " FROM TIPO_SOFTWARE INNER JOIN Tarefa ON TIPO_SOFTWARE.id = Tarefa.id_software" + " WHERE TIPO_SOFTWARE.id = " + id + ";" Com isso, você terá um SubSelect contendo os três tipos de prioridades. Como essa coluna ficará na última posição (depois do Status) e o campo Prioridade_Combo estará na última posição também, você já receberá esses valores na coluna ComboBox. Aí basta comparar qual é o valor da coluna invisível Prioridade com os itens do ComboBox para, quando carregar a grid, mostrar ao usuário o item correto :) PS: esse link contém um bom material com comandos que possam lhe ajudar a criar a coluna: http://msdn.microsoft.com/en-us/library/sy...oboxcolumn.aspx -
Vou deixar você quebrar a cabeça um pouco, mas basicamente, o que você vai precisar numa classe de conexão: 1) Montar a conexão 2) Abrir e fechar a conexão 3) Rotina para executar comandos não selecionáveis (INSERT/UPDATE/DELETE) 4) Rotina para executar comando selecionável (SELECT) O resto vai depender da sua necessidade. Toda vez que as rotinas 3 e 4 forem chamadas, as rotinas 2 devem ser executadas. No método construtor da sua classe de conexão, a montagem da conexão pode ser efetuada (ConnectionString). Se quiser, pode montar uma propriedade para passar dinamicamente a string de conexão para seu objeto de conexão. De outra forma, quando desejar executar um UPDATE, por exemplo, os passos lógicos serão: a) Ao instanciar o objeto da sua classe de conexão, o objeto de conexão interno da classe já montará a string de conexão com o banco B) Quando você solicitar a execução do UPDATE no seu Form, seu método da classe de conexão deverá abrir a conexão (através de um método, segundo enumerado acima - 2), executar o UPDATE e, mesmo que ocorra um erro, fechar a conexão com o banco.
-
Transformando Célula do GRID(com valores do banco) em ComboBoxCell
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
Lucas, não entendi. Você faz uma seleção de dados e atribui a um objeto. Deste, você carrega o DataGridView. Não basta pegar o campo que quer trabalhar como ComboBox, dar um "Visible = False" e trabalhar com esses dados invisíveis para montar seu ComboBox? Ficou confusa a explicação :/ -
Paulo, o _rsData parece conter todos os dados que você leu durante a pesquisa. Particularmente não costumo trabalhar como DataReader, mas fica a seu gosto. Esse código que te passei anteriormente você usará na sua tela de dados e não na classe de dados. Ou seja, quando for carregar a tela (Load), carrega os dados chamando sua classe de conexão. Agora sugestão cara... classe de conexão com o tempo fica um negócio meio automático de fazer, de acordo com sua necessidade. É interessante você montar sua própria classe pois algumas vezes as classes de tutoriais vêm com mais coisas que o necessário.
-
Paulo, nesse formato de "navegar" entre os registros, você vai ter que carregar todos os registros em um DataTable no Load. Depois, carregue os dados nos TextBox baseados no seu DataTable.Rows.Count (ou seja, último registro). Nos eventos dos botões de navegação (próximo/anterior) você precisa apenas verificar se é o último ou primeiro registros e, caso não seja, carregar aquela linha do seu DataTable. Essa é uma forma simples de fazer para tabelas com poucos registros. Em outros casos, impactaria em problemas de desempenho, visto que o DataTable com todos os registros ficaria armazenado na memória, esperando para ser usado.
-
Não sei para qual linguagem você quer trabalhar, mas segue esse link com código fonte disponível para download, que permite receber o atalho do ícone: http://www.msjogren.net/dotnet/eng/samples...t_shelllink.asp
-
Vá até o SQL Managment Studio, encontre sua tabela, clique com o direito e clique em Design. Em seguida, clique na sua ID e verifique se ela está configurada como chave primária (existe uma chave dourada do lado dela?). Se não, marque com a chave que existe na barra de menu. Depois, abaixo tem a "Column Properties". Vá até o item "Identity Specification" e marque como Yes o subitem "(Is Identity?)". Os subitens abaixo aparecerão como 1 e 1, que indicam respectivamente, quanto será adicionado a cada novo registro (ou seja, ID 1, 2, 3) e qual vai ser o ID inicial.
-
Paulo, o exemplo acima está usando parâmetros para executar o SqlCommand. É uma boa prática de programação usá-la. Mas para casos mais simples, pode usar de outra forma: string SQL = "INSERT INTO alunos (nome, telefone) VALUES ('" + tbNome.Text + "', '" + tbTelefone.Text "')" Lembrando que no código acima, foi criada toda uma classe de conexão e ações do banco. Esse método ExecuteCommand é um método criado pelo autor do código, que recebe a conexão e a string que será executada no banco.
-
Tem sim. Quando o usuário abrir a tela que você deseja já ter todos os dados carregados, coloque uma chamada de uma rotina que preencha todos os campos no Form Load: private void Form_Load(object sender, System.EventArgs e) { CarregaDados() } private void CarregaDados() { SqlDataAdapter _da = new SqlDataAdapter(); DataSet _dataSet = new DataSet(); SqlConnection _conexao = new SqlConnection(SUASTRINGCONEXAO); SqlCommand _command = new SqlCommand(conexao); _command.CommandText = "SELECT nome, idade, profissao FROM pessoa"; _conexao.Open() _da.Fill(_dataSet, "Retorno"); DataTable _dados = _dataSet.Tables["Retorno"]; foreach (DataRow _linha in _dados.Rows) { txtNome.Text = _linha["nome"].ToString(); txtIdade.Text = _linha["idade"].ToString(); txtProfissao.Text = _linha["profissao"].ToString(); } }
-
Pegar dados(banco) da TreeVIew - C# + MySql
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
O Name trouxe o valor da ID ou o nome do campo ID? :o -
Pegar dados(banco) da TreeVIew - C# + MySql
pergunta respondeu ao Lucas Conceição de Xistyle em .NET
Lucas, existem algumas formas de fazer isso. Eu tenho uma preferência que, devo admitir, não é a forma mais correta de fazer, mas dá menos trabalho. Tendo em vista que cada item de uma TreeView é um nó, salvo essa informação da ID na propriedade Tag de cada nó. TreeNode noDesenvolvimento = new TreeNode(); noDesenvolvimento.Text = "Desenvolvimento"; noDesenvolvimento.Tag = "1"; Basta alterar de forma a alimentar e criar esses nós dinamicamente, atribuindo os valores provinientes do banco. -
Amigo, o problema está no seu select. Sempre que você executar um MAX(campo), mesmo que não haja nenhuma informação, ele retornará uma linha informando zero. Ou seja, seu DataReader terá uma linha contendo a informação zero. No caso, você terá que fazer um outro if dentro do dr.Read(): if (dr.Read()) { if (dr["codigo"].ToString() == "0") textBox1.Text = "1"; else textBox1.Text = Convert.ToString(Convert.ToInt32(dr["codigo"].ToString())+ 1); } else { textBox1.Text = "1"; }
-
Daniel, até onde sei, o Crystal não tem suporte para Nullable Types. Normalmente trato meus dados "nulls" para receber uma string vazia ou zero, em caso de tipos númericos.
-
Tudo poderia ser pesquisa no Google, mas... bom vamos a explicações simples: Solution: conjunto de projetos. Sempre se ouve falar que a empresa X vai vender ao cliente uma solução Y. Essa solução contém vários projetos integrados, que se comunicam. Ou seja, por exemplo, o módulo financeiro envia e recebe dados para o módulo administrativo, que também envia e recebe dados do módulo de recursos humanos e por ai vai. Cada módulo pode ser dividido de uma forma, dentro de um mesmo projeto ou sendo um projeto separado. DataRow: é uma linha de dados existente em um DataTable. Como se fosse a linha de uma pesquisa no banco de dados. DataTable: conjunto de linhas e colunas retornadas de uma consulta. Essa consulta pode ser realizada via banco de dados, via preenchimento manual (por um vetor, por exemplo), por um arquivo XML, entre outros. DataSet: http://www.macoratti.net/vbn_dts1.htm Add Reference: O seu projeto e classes, já vem com algumas bibliotecas importadas, de acordo com o tipo de projeto. Essa opção permite que você adicione novas bibliotecas, que não vêm importadas por padrão. Add Reference Web: adiciona a instância de um WebService. TemplateField: permite a criação de um modelo (template) de campo, que pode conter vários controles. Esse modelo pode ser importado para várias colunas. BoundField: exibe o valor dos dados como texto.