Ir para conteúdo
Fórum Script Brasil

ƒ Edu ƒ

Membros
  • Total de itens

    36
  • Registro em

  • Última visita

Tudo que ƒ Edu ƒ postou

  1. Meu caro, que tal você acrescentar somente um "And" nesse IF? Assim: If (TypeOf c Is TextBox) and (c.text <> null) Then c.Text = "" End If Talvez a sintaxe não esteja correta para o ASPX, pois nunca programei nessa linguagem, mas a lógica seria esta. Abraço.
  2. O C# não aceita esta sintax codigo = dr("codaluno") + 1; Teria que ser assim: codigo = dr["codaluno"] + 1; Mas também não da: Error Operator '+' cannot be applied to operands of type 'object' and 'int' Se eu tento assim também não resolve: codigo = (dr["codaluno"] )+ 1;
  3. Olá galera. Estou utilizando C# para fazer uma tela de cadastro de alunos, ao clicar em registrar, os dados do formulário são inseridos no banco de dados, mas neste momento deve ser gerado o código do aluno automaticamente e inserido junto com os outros dados no BD... Eu possuo o código mas em Visual Basic vejam: If rs.RecordCount = 0 Then codigo = 1 Else rs.MoveLast codigo = rs("codaluno") + 1 End If No C# consegui chegar até este código: Declarei a variável int codigo. if (dr.HasRows == true) { codigo = 1; } else { dr.Read(); codigo = dr.NaoSeiQual("codaluno") + 1; } O problema é que não sei qual a propriedade que refere-se ao registro da coluna ("codaluno") para adicionar +1 caso já exista algum...
  4. Beleza cara. Valeu pela ajuda. Ta tudo funcionando certinho. Abraço.
  5. Valeu Graymalkin, funcionou. Agora tem um complemento para esta função caso eu esteja usanto algum controle tipo tabpage, tabcontrol, panel, etc, para que este método faça a varredura nas textboxes contidas nestes controles... Mas o código que eu vi na net não fez muito sentido pra mim. Tentei da seguinte forma, mas não limpou nada no form: public static void LimparTextBox(Control formulario) { foreach (Control controle in formulario.Controls) { if (controle.GetType().ToString() == "System.Windows.Forms.GroupBox" || controle.GetType().ToString() == "System.Windows.Forms.TabControl" || controle.GetType().ToString() == "System.Windows.Forms.Panel" || controle.GetType().ToString() == "System.Windows.Forms.TabPage" ) { LimparTextBox(controle) if (controle.GetType().ToString() == "System.Windows.Forms.TextBox") { controle.Text = ""; } } } }
  6. Galera, estou usando C#, e criei um método para limpar todas as textbox do form, mas não consigo chamar este método em outro form passando o form atual como parâmetro... Método: public static void LimparTextBox(Control formulario) { foreach (Control controle in formulario.Controls) { if (controle.GetType().ToString() == "TextBox") { controle.Text = ""; } } } No botão limpar eu tento chamar o método: private void LimparButton_Click(object sender, EventArgs e) { MenuForm.LimparTextBox(IncidenteForm); } Ao tentar compilar ele retorna o erro: Error 'HelpTool.IncidenteForm' is a 'type' but is used like a 'variable'
  7. Galera... Preciso copiar o nome e cod do aluno da tbaluno para a tbmatricula, mas com 2 condições: O nome e cod do aluno têm que fazer referência com o que está sendo exibido no DataGrid, e estes dados devem ser copiados para o campo de acordo com o que foi selecionado no Combo2. Mas ao executar, o programa me retorna um erro dizendo "Nenhum valor foi fornecido para um ou mais parametros necessários". Eu sei que isso está ocorrendo porque tem algo errado na instrução SQL, mas não sei achar onde está o erro e, não conheço outra forma de fazer esta cópia de dados. Alguém consegue ver onde está o erro? Private Sub cmdIncluir_Click() If rsGridTurma.State <> 0 Then rsGridTurma.Close End If 'sql = "select tbaluno.nomealuno, tbaluno.codaluno, tbmatricula.nomealuno, tbmatricula.codaluno " 'sql = sql & " from tbaluno inner join tbmatricula on tbaluno.codaluno = tbmatricula.codaluno" 'sql = sql & " where tbmatricula.nometurma = '" & Combo2.Text & "'" 'sql = sql & " and tbaluno.codaluno = '" & GridAluno.Columns(0).Value & "'" 'Set rsGridTurma = New ADODB.Recordset 'rsGridTurma.Open sql, bd, adOpenStatic, adLockOptimistic With cmd .ActiveConnection = bd .CommandType = adCmdText .CommandText = "insert into tbmatricula" & _ "(codaluno,nomealuno) select codaluno,nomealuno from tbaluno" & _ " where tbaluno.codaluno = '" & GridAluno.Columns(0).Value & "'" & _ " and tbturma.nometurma = '" & Combo2.Text & "'" .Execute End With MsgBox "Aluno incluso na turma com êxito!", vbInformation, "Aviso" End Sub
  8. Preciso especificar a propriedade Value também?
  9. Pessoal, preciso fazer uma consulta no BD utilizando um critério de busca, mas o critério que eu quero utilizar é o dado de um campo do DataGrid. Seria assim "Where tbaluno.codaluno = campo do grid " Mas não sei qual a propriedade do DataGrid que corresponde ao dado tal, da linha x e coluna y... Alguém pode dar uma dica? Valeu.
  10. Valeu cara. Dúvidas esclarecidas... Pode fechar o tópico se precisar. Abraço.
  11. Deu certo cara, valeu mesmo. Têm como ajustar os forms filhos para abrirem no tamanho de acordo com o Pai? Procurei por ai mas não achei nada do tipo...
  12. Então Kuroi, o problema é que não sei a sintax pra chamar esta função. Se eu coloco "Centraliza (frmMenu,frmbuscaaluno)" a linha fica vermelha. Ele pede sinal de "=". Centraliza (frmMenu,frmbuscaaluno)="Mas não sei o que eu tenho que colocar aqui".
  13. Então, fiz essa correção ai, mas não to conseguindo chamar essa sub no Load do form... A sintax não é assim: Centraliza(frmMenu, frmBuscaAluno)
  14. Alguém sabe como faço para centralizar um form Child em um MDI? Achei esta função no Macoratti mas não to conseguindo chama-la: Public Sub Centraliza(Parent As Form, Child As Form) Dim iTop As Integer Dim iLeft As Integer If Parent.WindowState <> 0 Then iTop = ((Parent.Height - Child.Height) \ 2) iLeft = ((Parent.Width - Child.Width) \ 2) Child.Move iLeft, iTop End Sub
  15. Vamos lá meu amigo... Segue abaixo o código do form de login do meu programa. Da uma olhada, tente entende-lo. Depois pra fazer um form de alterar é bem facil: Private Sub cmdOkLogin_Click() Dim strbusca, strsenha As String strbusca = txtLogin strsenha = txtPass If txtLogin = "" Then MsgBox "Favor inserir um nome de usuario.", vbInformation, "Aviso" txtLogin.SetFocus Else Call Abrir_Banco 'Esta linha é uma função que contém a string de conexão com o banco de dados. sql = "select * from tblogin" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open sql, bd, adOpenStatic, adLockOptimistic If frmLogin.txtLogin = rs!usuario And frmLogin.txtPass = rs!senha Then Unload Me frmMenu.Show Else MsgBox "Nome de usuario e senha incorretos", vbInformation, "Aviso" txtLogin.SetFocus rs.Close End If Set rs = Nothing bd.Close End If End Sub Tenta fazer com banco de dados primeiramente, se der certo o login através do banco, você volta aqui, que eu te falo como alterar a senha também. Abraço!
  16. Muito bom Kuroi, mas tive que aplicar o mesmo raciocínio para o bd.Close, pois só fechando o RS ele ainda falava que o BD já estava aberto. Então eu fiz assim: If (rs.State <> 0) and (bd.State <> 0) then Rs.Close bd.Close End If
  17. Onde quer que eu posicione o "Rs.Close" antes da execução, ele me retorna o erro "Run Time Error ' 3704 ': Operação não permitida quando o objeto está fechado" Private Sub Preencher_Grid() strbusca = TxtBusca BD_Conexao.Abrir_Banco sql = "select codaluno,nomealuno from tbaluno" sql = sql & " where tbaluno.nomealuno like '" & strbusca & "%'" Rs.Close 'Se eu colocar o Rs.Close nesta linha, é apresentado o erro. Set rs = New ADODB.Recordset rs.Open sql, bd, adOpenStatic, adLockOptimistic If Not rs.EOF Then Set Grid1.DataSource = rs Grid1.Columns.Item(0).Caption = "Mat." Grid1.Columns.Item(0).Width = 650 Grid1.Columns.Item(1).Caption = "Aluno" Else MsgBox "Aluno não encontrado", vbInformation, "Aviso" End If End Sub Private Sub Preencher_Grid() strbusca = TxtBusca BD_Conexao.Abrir_Banco sql = "select codaluno,nomealuno from tbaluno" sql = sql & " where tbaluno.nomealuno like '" & strbusca & "%'" Rs.Close 'Se eu colocar o Rs.Close nesta linha, é apresentado o erro. Set rs = New ADODB.Recordset Rs.Close 'Assim também da erro. set rs = bd.Execute(sql) If Not rs.EOF Then Set Grid1.DataSource = rs Grid1.Columns.Item(0).Caption = "Mat." Grid1.Columns.Item(0).Width = 650 Grid1.Columns.Item(1).Caption = "Aluno" Else MsgBox "Aluno não encontrado", vbInformation, "Aviso" End If End Sub Não importa o local onde eu coloque o Rs.Close, sempre vem o erro: Run Time Error ' 3704 ': Operação não permitida quando o objeto está fechado. Se eu fizer o esquema de colocar o RS e o BD como Nothing no início do código no botão Buscar, ai não da erro, mas assim ele destroi os dois ao invés de fechar certo? Será que destruir os dois não é o mesmo que fechar e depois setar como Nothing?
  18. ai de um Close no RecordSet antes de abrir (antes da linha rs.Open sql, bd, adOpenStatic, adLockOptimistic). ou simplesmente troque a linha rs.Open sql, bd, adOpenStatic, adLockOptimistic por Set rs = bd.Execute(sql) Eu tentei fazer isto, mas quando executo, logo na primeira busca já diz que o objeto está fechado. Ai eu fiz o seguinte, logo no início da sub do botão buscar, eu coloquei: Set rs = Nothing Set bd = Nothing Não sei se fiz certo, mas se eu usasse o Rs.Close e bd.Close não rolava.
  19. Funcionoooooooooouuuuuuuuuuuuuuuuuu!!! Valeu mesmo Kuroi! Eu já estava quase mudando o projeto. Mas e agora como posso fazer para efetuar uma nova busca sem ter que fechar o form ou algo do tipo. Porque da forma que ficou, ele acusa que o objeto está aberto...
  20. Então... O código ta assim: Esta sub ta declarada no general do form de busca. Private Sub Preencher_Grid() strbusca = TxtBusca BD_Conexao.Abrir_Banco sql = "select codaluno,nomealuno from tbaluno" sql = sql & " where tbaluno.nomealuno like '" & strbusca & "%'" Set rs = New ADODB.Recordset rs.Open sql, bd, adOpenStatic, adLockOptimistic If Not (rs.EOF and rs.BOF) Then Set Grid1.DataSource = rs Grid1.Columns.Item(0).Caption = "Mat." Grid1.Columns.Item(0).Width = 650 Grid1.Columns.Item(1).Caption = "Aluno" Else MsgBox "Aluno não encontrado", vbInformation, "Aviso" End If rs.Close Set rs = Nothing End Sub A sub está absolutamente correta conforme a orientação que tive aqui e em outro forum, o problema é o seguinte: Este é o botão de busca. Se eu usar SELECT CASE ou qualquer outra tomada de decisão para ler o critério de busca selecionado pelo usuário, a sub Preencher_Grid não funciona, simplesmente os dados não aparecem no Grid. Não apresenta nenhum erro, são não preenche o grid. Private Sub cmdBuscar_Click() strbusca = TxtBusca If TxtBusca = "" Then MsgBox "Digite o dado para busca de acordo com o critério escolhido.", vbInformation, "Aviso" TxtBusca.SetFocus Else 'Teste das opções de busca Select Case Option1 Or Option2 Or Option3 Case Option1 = True If Not IsNumeric(TxtBusca.Text) Then MsgBox "O dado informado não corresponde ao critério de busca utilizado.", vbInformation, "Aviso" TxtBusca.SetFocus Exit Sub Else BD_Conexao.Abrir_Banco sql = "SELECT tbaluno.*, tbfiliacao.* " sql = sql & " FROM tbaluno INNER JOIN tbfiliacao ON tbaluno.codaluno = tbfiliacao.codaluno" sql = sql & " Where tbaluno.codaluno = " & strbusca & "" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open sql, bd, adOpenStatic, adLockOptimistic Exibir_Aluno rs.Close Set rs = Nothing Fechar_Banco End If Case Option2 = True Preencher_Grid Fechar_Banco Case Option3 = True Call Abrir_Banco sql = "SELECT tbaluno.*, tbfiliacao.* " sql = sql & " FROM tbaluno INNER JOIN tbfiliacao ON tbaluno.codaluno = tbfiliacao.codaluno" sql = sql & " Where tbaluno.rg = '" & strbusca & "'" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open sql, bd, adOpenStatic, adLockOptimistic Exibir_Aluno rs.Close Set rs = Nothing Fechar_Banco End Select End If End Sub Já tentei com IF e também não funcionou. No módulo eu tenho declarado isso: Global bd As New ADODB.Connection Global rs As New ADODB.Recordset Global cmd As New ADODB.Command Public Sub Abrir_Banco() bd.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" & _ App.Path & "\bd1.mdb" bd.CursorLocation = adUseClient bd.Open End Sub Public Sub Fechar_Banco() bd.Close Set bd = Nothing End Sub Será que não tem como fazer isso? Ou pelomenos deixar uma busca com 2 critérios, por matrícula ou nome, acho que isto não pode faltar neste programa.
  21. Ainda não consegui fazer funcionar... Preciso usar este código aqui, porque o outro não cabe à minha necessidade: Private Sub Preencher_Grid() strbusca = TxtBusca Abrir_Banco sql = "select codaluno,nomealuno from tbaluno where nomealuno= '" & strbusca & "'" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open sql, bd, adOpenStatic, adLockOptimistic If Not rs.EOF Then Set Grid1.DataSource = rs Grid1.MarqueeStyle = dbgHighlightRowRaiseCell Grid1.Columns.Item(0).Caption = "Cod" Grid1.Columns.Item(0).Width = 600 Grid1.Columns.Item(1).Caption = "Aluno" Else MsgBox "Aluno não encontrado", vbInformation, "Aviso" End If rs.Close Set rs = Nothing End Sub O DataGrid só deverá ser preenchido quando eu efetuar uma busca por nome, e no DataGrid só deve aparecer os alunos de nome solicitado na busca. Caso o aluno buscado não exista, a mensagem deve ser apresentada informando isto. Não consegui adaptar o outro código para isto, eu vejo nos tutoriais, o código pra preencher um grid é tão simples, mas comigo não funciona. Em outros projetos que vejo na net, os caras colocam apenas "Set DataGrid.DataSource = Rs" e o grid é preenchido, eu sou muito zicado mesmo. :blush:
  22. Calma amigo, não se dê por vencido assim tão facil. Comecei há pouco tempo com VB também, sempre me deparo com um muro muito alto, mas sempre acho um jeito de pular ele. ehehe Vamos la... Você quer saber como registrar, consultar e alterar os dados na tabela através do programinha em VB. 1º Passo é declarar estas variáveis em um Módulo. Global bd As New ADODB.Connection Global rs As ADODB.Recordset 2º Passo é criar uma sub para conexão com o banco. Como o seu bd é em access, da pra você se basear neste código: Public Sub Abrir_Banco() bd.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" & _ App.Path & "\bd1.mdb" bd.Open End Sub Para registrar os dados na tabela, você deve inserir em um form as TextBoxes conforme os campos do bd. Crie um botão registrar e nele você coloca o seguinte código: Call Abrir_Banco sql = "select * from NomeDaTabela" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open sql, bd, adOpenStatic, adLockOptimistic With rs .AddNew .Fields!nome do campo da tabela = nome da textbox correspondente ao campo 'Exemplo: .Fields!email = txtboxEmail .Fields!nome do campo da tabela = nome da textbox correspondente ao campo .Update End With rs.Close Set rs = Nothing bd.Close Para o botão Atualizar Dados você pode utilizar o mesmo código do registrar, a diferença é que no "With rs" você não coloca a linha .AddNew. Assim ele grava os dados no registro já existente. Continue tentando que você consegue. Abraço.
  23. Então Macedo... Nem consegui ainda fazer com que os dados sejam exibidos no DBGrid. To usando o código que me passaram aqui: Public Sub Preenche_Grid() With cmd .ActiveConnection = bd 'Esta linha é destacada quando o erro é apresentado .CommandType = adCmdText .CommandText = "select Nome, matricula, rg from tbaluno" Set rs = .Execute End With With rs Set DBGrid1.DataSource = rs End With End Sub Declarei isto em um módulo, estou chamando esta sub no evento load do form onde está o DBGrid1, mas ai ele me retorna o seguinte erro: Run-time error '91 Object variable or With block variable not set No topo do módulo tenho declarado as seguintes variáveis: Global bd As New ADODB.Connection Global rs As ADODB.Recordset Global cmd As ADODB.Command O que será que está errado?
  24. ƒ Edu ƒ

    combobox do vb

    Não entendi... Você já solucionou a dúvida? Bom se ainda tiver com essa dúvida, faz assim: Private Sub Combo1_Click() Text1.Text = Combo1.Text End Sub Toda vez que você clicar em um item da lista no combo, ele vai jogar para o txtbox. Abraço.
×
×
  • Criar Novo...