erro ao gravar

tenho um pequeno problema e o meu programa (tá a ser desenvolvido em VB6) nao grava como deve ser.

rsMyRS.MoveFirst
Dim X As Integer
X = 1

Do While Not X = rsMyRS.RecordCount
If MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - X, 6) = "þ" Then
rsMyRS.Edit
rsMyRS!conferido = True
rsMyRS.Update
Else
rsMyRS.Edit
rsMyRS!conferido = False
rsMyRS.Update
End If
rsMyRS.MoveNext
X = X + 1
Loop

X = 1
rsMyRS.MoveFirst
Do While Not X = rsMyRS.RecordCount
If MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - X, 7) = "þ" Then
rsMyRS.Edit
rsMyRS!pago = True
rsMyRS.Update
Else
rsMyRS.Edit
rsMyRS!pago = False
rsMyRS.Update
End If
rsMyRS.MoveNext
X = X + 1
Loop
rsMyRS.MoveFirst
MsgBox ("Guardado")
é este o código. o problema que tenho é que mando gravar o 1º registo que está na flex grid e ele grava-me o ultimo.. >(
 
Mas podes fazer tudo só de uma vez,
Código:
                             rsMyRS.MoveFirst
Dim X As Integer
X = 1

Do While Not X = rsMyRS.RecordCount
    If MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - X, 6) = "þ" Then
        rsMyRS.Edit
        rsMyRS!conferido = True
        rsMyRS!pago = True ' <--------- Acrescenta isto no 1º loop
        rsMyRS.Update
    Else
        rsMyRS.Edit
        rsMyRS!conferido = False
        rsMyRS!pago = False ' <--------- Acrescenta isto no 1º loop
        rsMyRS.Update
    End If
rsMyRS.MoveNext
X = X + 1
Loop
A ver se percebo, se sabes que ele grava tudo, porque dizes que só queres gravar o 1º?!?!? Para gravares só um registo tens procurá-lo na bd e só depois e que fazes o update e sem o Do, porque com o Do percorres todos e gravas sempre todos.
 
Mas podes fazer tudo só de uma vez,
Código:
                             rsMyRS.MoveFirst
Dim X As Integer
X = 1

Do While Not X = rsMyRS.RecordCount
    If MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - X, 6) = "þ" Then
        rsMyRS.Edit
        rsMyRS!conferido = True
        rsMyRS!pago = True ' <--------- Acrescenta isto no 1º loop
        rsMyRS.Update
    Else
        rsMyRS.Edit
        rsMyRS!conferido = False
        rsMyRS!pago = False ' <--------- Acrescenta isto no 1º loop
        rsMyRS.Update
    End If
rsMyRS.MoveNext
X = X + 1
Loop
A ver se percebo, se sabes que ele grava tudo, porque dizes que só queres gravar o 1º?!?!? Para gravares só um registo tens procurá-lo na bd e só depois e que fazes o update e sem o Do, porque com o Do percorres todos e gravas sempre todos.

para esse codigo funcionar tenho só que acrescentar mais uma coisinha porque são duas colunas.
ele grava tudo mas grava trocado, do genero estão todos a falso, eu mudo para verdadeiro apenas o primeiro e ele grava-me o ultimo como verdadeiro e nao o primeiro.. :s
 
Isso acontece porque no DO percorres em sentido ascendente e depois no if percorres no sentido inverso (se alterares a 2ª linha do flexgrid, vais gravar o penultimo registo do recordset) .
O código que te dei também tinha um erro, acho que agora este resolve:

Código:
rsMyRS.MoveFirst
Dim X As Integer
X = 1

Do While Not X = rsMyRS.RecordCount
    rsMyRS.Edit    
     ' REPARA QUE ALTEREI A MANEIRA COMO FAZIAS A COMPARAÇÃO
    If MSFlexGrid1.TextMatrix(X, 6) = "þ" Then
        rsMyRS!conferido = True
    Else
        rsMyRS!conferido = False

    End If
     ' ALTEREI DE 6 PARA 7 NA COMPARAÇÃO
    If MSFlexGrid1.TextMatrix(X, 7) = "þ" Then
        rsMyRS!pago = True 
    Else
        rsMyRS!pago = False
    End If
    rsMyRS.Update 
    rsMyRS.MoveNext
    X = X + 1
Loop
 
Back
Topo