Jump to content

Procurar numa datagridview melhor opção?


electric

Recommended Posts

Boas, eu sei que titulo do topico pode parcer outro igual aos que ai anda, a verdade é que tou farto de procurar e tentar mas nao estou a conseguir...

IDEIA:

1- tenho uma base de dados que sera preenchida

2 - dados sao expostos numa datagridview apenas com 1 linda e 4 colunas

3 - tenho 4 variaveis que serao preenchidas com os respectivos valores da celulas

4 - se a celulas 1 estiver preenchida preenche uma checkbox e passa para a celula 2 e assin sucessivamente

5 - caso a ultima preenchida for a 2 vai executar uma linha que vai escrever no campo 3

bem eu tentei um pouco de tudo, if then, select case, for each

no caso do select case tive mais sucesso no entanto mas se a base de dados tiver o campo 1 e 2 preenchidos e o campo 3 nao .. da erro :\

vou deixar aqui os codigos...

Sub preenchervariaveis()
 'VARIAVEIS
 Dim E1 As String = ""
 Dim S1 As String = ""
 Dim E2 As String = ""
 Dim S2 As String = ""
 CbxEmanha.Checked = False
 CbxSmanha.Checked = False
 CbxEtarde.Checked = False
 CbxStarde.Checked = False

 If DgvEntradaesaida.CurrentCell Is Nothing Then
	 MsgBox("Tecnico ainda nao fez a picagem!")
 Else
	 For Each row As DataGridViewRow In DgvEntradaesaida.Rows
		 Dim i As Integer = 1
		 If DgvEntradaesaida.Rows(0).Cells(i).Value <> String.Empty Then
			 MsgBox("esta vazio")
			 i = i + 1
			 MsgBox(i)
		 End If
	 Next
	 'Dim preenchercbx As Integer
	 'Select Case preenchercbx
	 ' Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value = True
	 '	 CbxEmanha.Checked = True
	 '	 MsgBox("1")
	 ' Case S1 = DgvEntradaesaida.Rows(0).Cells(1).Value = True
	 '	 CbxSmanha.Checked = True
	 '	 MsgBox("2")
	 ' Case E2 = DgvEntradaesaida.Rows(0).Cells(2).Value = True
	 '	 CbxEtarde.Checked = True
	 '	 MsgBox("3")
	 ' Case S2 = DgvEntradaesaida.Rows(0).Cells(3).Value = True
	 '	 CbxStarde.Checked = True
	 '	 MsgBox("4")
	 'End Select
	 'If E1 = DgvEntradaesaida.Rows(0).Cells(0).Value = True Then
	 ' CbxEmanha.Checked = True
	 'End If
	 'If S1 = DgvEntradaesaida.Rows(0).Cells(1).Value = True Then
	 ' CbxSmanha.Checked = True
	 'End If
	 'Dim preenchercbx As Integer
	 'Select Case preenchercbx
	 ' Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value <> String.Empty And S1 = DgvEntradaesaida.Rows(0).Cells(1).Value <> String.Empty And E2 = DgvEntradaesaida.Rows(0).Cells(2).Value <> String.Empty And S2 = DgvEntradaesaida.Rows(0).Cells(3).Value <> String.Empty
	 '	 CbxEmanha.Checked = True
	 '	 CbxSmanha.Checked = True
	 '	 CbxEtarde.Checked = True
	 '	 CbxStarde.Checked = True
	 ' Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value = True And S1 = DgvEntradaesaida.Rows(0).Cells(1).Value = True And E2 = DgvEntradaesaida.Rows(0).Cells(2).Value = True
	 '	 CbxEmanha.Checked = True
	 '	 CbxSmanha.Checked = True
	 '	 CbxEtarde.Checked = True
	 ' Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value = True And S1 = DgvEntradaesaida.Rows(0).Cells(1).Value = True
	 '	 CbxEmanha.Checked = True
	 '	 CbxSmanha.Checked = True
	 ' Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value = True
	 '	 CbxEmanha.Checked = True
	 'End Select
	 'For Each row As DataGridViewRow In DgvEntradaesaida.Rows
	 ' Dim preenchercbx As Integer
	 ' Select Case preenchercbx
	 '	 Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value <> String.Empty And S1 = DgvEntradaesaida.Rows(0).Cells(1).Value <> String.Empty And E2 = DgvEntradaesaida.Rows(0).Cells(2).Value <> String.Empty And S2 = DgvEntradaesaida.Rows(0).Cells(3).Value <> String.Empty
	 '		 CbxEmanha.Checked = True
	 '		 CbxSmanha.Checked = True
	 '		 CbxEtarde.Checked = True
	 '		 CbxStarde.Checked = True
	 '	 Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value <> String.Empty And S1 = DgvEntradaesaida.Rows(0).Cells(1).Value <> String.Empty And E2 = DgvEntradaesaida.Rows(0).Cells(2).Value <> String.Empty
	 '		 CbxEmanha.Checked = True
	 '		 CbxSmanha.Checked = True
	 '		 CbxEtarde.Checked = True
	 '	 Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value <> String.Empty And S1 = DgvEntradaesaida.Rows(0).Cells(1).Value <> String.Empty
	 '		 CbxEmanha.Checked = True
	 '		 CbxSmanha.Checked = True
	 '	 Case E1 = DgvEntradaesaida.Rows(0).Cells(0).Value <> String.Empty
	 '		 CbxEmanha.Checked = True
	 ' End Select
	 'Next row
	 'MsgBox(DgvEntradaesaida.Rows(0).Cells(0).Value & DgvEntradaesaida.Rows(0).Cells(1).Value & DgvEntradaesaida.Rows(0).Cells(2).Value & DgvEntradaesaida.Rows(0).Cells(3).Value)
 End If

End Sub

Espero me ter explicado bem 🙂

Obrigado desde ja 😉

PS: obviamente coloquei todas as tentativas pois apesar de querer usar a melhor, gostava de perceber porque das outras nao funcionarem 🙂

Link to comment
Share on other sites

Isso está mal.

Se só tens uma linha, tens de percorrer as colunas.

For i As Integer = 0 To DgvEntradaesaida.Columns.Count - 1
   If DgvEntradaesaida.Rows(0).Cells(i).Value.ToString() = String.Empty Then
	    ' Faz algo..
   End If
Next

Se quiseres ver o que é que as células contêm, mandas uma MsgBox dá célula dentro do ciclo.

Edited by bioshock
Link to comment
Share on other sites

😄 resolvi assim:

Sub preenchervariaveis()
    'VARIAVEIS

    Dim E1 As String = ""
    Dim S1 As String = ""
    Dim E2 As String = ""
    Dim S2 As String = ""

    CbxEmanha.Checked = False
    CbxSmanha.Checked = False
    CbxEtarde.Checked = False
    CbxStarde.Checked = False


    If DgvEntradaesaida.CurrentCell Is Nothing Then
	    MsgBox("Tecnico ainda nao fez a picagem!")
    Else

	    For i As Integer = 0 To DgvEntradaesaida.Columns.Count - 1
		    If DgvEntradaesaida.Rows(0).Cells(i).Value.ToString() = String.Empty Then
			    MsgBox("vazio no campo " & i)


		    Else
			    'Dim preenchercbx As Integer
			    Select Case i
				    Case 0 'DgvEntradaesaida.Rows(0).Cells(0).Value = True
					    CbxEmanha.Checked = False
					    CbxSmanha.Checked = False
					    CbxEtarde.Checked = False
					    CbxStarde.Checked = False
				    Case 1 'DgvEntradaesaida.Rows(0).Cells(1).Value = True
					    CbxEmanha.Checked = True
					    CbxSmanha.Checked = True
					    CbxEtarde.Checked = False
					    CbxStarde.Checked = False
				    Case 2 'DgvEntradaesaida.Rows(0).Cells(2).Value = True
					    CbxEmanha.Checked = True
					    CbxSmanha.Checked = True
					    CbxEtarde.Checked = True
					    CbxStarde.Checked = False
				    Case 3 'DgvEntradaesaida.Rows(0).Cells(3).Value = True
					    CbxEmanha.Checked = True
					    CbxSmanha.Checked = True
					    CbxEtarde.Checked = True
					    CbxStarde.Checked = True
			    End Select
		    End If
	    Next

    End If

Aprovas ou achas que ha maneira de fazer mais simples de forma ao codigo ficar mais leve ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.