MUDANDO TEXT BOX CONFORME RESULTADO

SAMUELHARSO 12/08/2014 17:29:58
#440377
Olá !!!

Eu gostaria de fazer isso:

If txtDias.Text > 0 Then
txtSituacao.Text = [Ô]BLOQUEADO[Ô]
Else
txtSituacao.Text = [Ô]DISPONÍVEL[Ô]
End If

Porém, no DataGridView , é possível ? Sem a necessidade de criar um campo no banco de dados...
JONATHANSTECKER 12/08/2014 19:41:36
#440380
[ô] Definir os dias restantes:
Me.DataGridView1.Rows(0).Cells(1).Value = CDate(Me.DataGridView1.Rows(0).Cells(5).Value).Day - CDate(Me.DataGridView1.Rows(0).Cells(4).Value).Day

[ô] Definir a situação:
If Me.DataGridView1.Rows(0).Cells(2).Value > 0 Then
Me.DataGridView1.Rows(0).Cells(2).Value = [Ô]BLOQUEADO[Ô]
Else
Me.DataGridView1.Rows(0).Cells(2).Value = [Ô]DISPONÍVEL[Ô]
End If
SAMUELHARSO 13/08/2014 00:12:30
#440384
Obrigado !!

Funcionou, porém só na primeira linha... Não entendi o porque...
NILSONTRES 13/08/2014 07:43:09
#440385
Porque no exemplo do JONATHANSTECKER, observe que ele coloca row(0).
vc precisa informar o numero da linha, altere para:
Me.DataGridView1.Rows(e.rowindex), ou o numero da linha conforme a situação e ou evento utilizado.
SAMUELHARSO 13/08/2014 13:38:06
#440396
Deu erro trocar (0) por (e.rowindex)

E eu preciso deixá-lo automático para quando o usuário preencher, já aparecer
JONATHANSTECKER 13/08/2014 14:03:52
#440398
Rows(0)

0 é o Index da linha. Você pode preencher usando um For Each, preencher conforme adiciona no grid, preencher quando alterar um envento...
A lógica é esta, fica a seu critério como e onde utilizá-lo.
SAMUELHARSO 13/08/2014 16:09:25
#440406
Eu tentei o seguinte:

For Each row As DataGridViewRow In VoluntariosDataGridView1.Rows
If Me.VoluntariosDataGridView1.Rows(0).Cells(2).Value > 0 Then
Me.VoluntariosDataGridView1.Rows(0).Cells(1).Value = [Ô]BLOQUEADO[Ô]
Else
Me.VoluntariosDataGridView1.Rows(0).Cells(1).Value = [Ô]DISPONÍVEL[Ô]
End If
Next

Não dá erro, mas também não dá certo ! hahah DataGrid confunde minha cabeça !!

PEGUDO 13/08/2014 20:21:23
#440416
Resposta escolhida
Cara,
Primeiro você deve entender a lógica:
Se 0 representa a 1ª linha, então 1 representará a 2ª linha;
Se 2 representa a 3ª linha, então 3 representará a 4ª linha;
e assim por diante.

Então se você usar o [txt-color=#0000f0]For Each[/txt-color] você precisará fornecer um contador que será incrementado a cada loop.
exemplo:
Dim contador as UInt32 = 0

For Each row As DataGridViewRow In VoluntariosDataGridView1.Rows
If Me.VoluntariosDataGridView1.Rows(contador).Cells(2).Value > 0 Then
Me.VoluntariosDataGridView1.Rows(contador).Cells(1).Value = [Ô]BLOQUEADO[Ô]
Else
Me.VoluntariosDataGridView1.Rows(contador).Cells(1).Value = [Ô]DISPONÍVEL[Ô]
End If

contador += 1
Next
SAMUELHARSO 13/08/2014 21:31:27
#440419
Funcionou perfeitamente !! :D Obrigado à todos !!

SAMUELHARSO 13/08/2014 21:55:20
#440420
Só estou tendo erro ao calcular a diferença de datas...

Código para calcular as datas:

Citação:

Dim contador As UInt32 = 0
Dim data1 As Date
Dim data2 As Date
Dim Difference As TimeSpan

For Each row As DataGridViewRow In VoluntariosDataGridView1.Rows

data1 = Convert.ToDateTime(Me.VoluntariosDataGridView1.Rows(contador).Cells(4).Value)
data2 = Convert.ToDateTime(Me.VoluntariosDataGridView1.Rows(contador).Cells(5).Value)
Difference = data2.Subtract(data1)
Me.VoluntariosDataGridView1.Rows(contador).Cells(2).Value = FormatNumber(Difference.TotalDays, 0)

contador += 1
Next

SAMUELHARSO 14/08/2014 21:20:04
#440457
Eu consegui a seguinte solução:

Colocar esse código:
Citação:

[th][/th]
Cabecalho
Private Sub Consulta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.VoluntariosTableAdapter.Fill(Me.DatabaseDataSet.Voluntarios)


Dim contador As UInt32 = 0
Dim data1 As Date
Dim data2 As Date
Dim Difference As TimeSpan

For Each row As DataGridViewRow In VoluntariosDataGridView1.Rows

data1 = Convert.ToDateTime(Me.VoluntariosDataGridView1.Rows(contador).Cells(4).Value)
data2 = Convert.ToDateTime(Me.VoluntariosDataGridView1.Rows(contador).Cells(5).Value)
Difference = data2.Subtract(data1)
Me.VoluntariosDataGridView1.Rows(contador).Cells(2).Value = FormatNumber(Difference.TotalDays, 0)

If Me.VoluntariosDataGridView1.Rows(contador).Cells(2).Value > 0 Then
Me.VoluntariosDataGridView1.Rows(contador).Cells(1).Value = [Ô]BLOQUEADO[Ô]
Else
Me.VoluntariosDataGridView1.Rows(contador).Cells(1).Value = [Ô]DISPONÍVEL[Ô]
End If

contador += 1

Next
End Sub



No Form Load... , mas só consigo ver os resultados ao fechar e abrir novamente o Form... e para salvar os resultados no banco de dados, necessito toda vez Salvar ao fechar, e abrir para mostrar os resultados novamente e salvar novamente, e então os resultados ficam no banco de dados...

Já tentei colocar o código no CellEndEdit no DataGrid, mas quando eu coloco a primeira data e o datagrid já tenta calcular e da erro.

Alguém sabe uma solução ?

Obrigado !!
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas