1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

erro ao gravar

Discussão em 'Programação' iniciada por Alcantara_18, 21 de Janeiro de 2008. (Respostas: 6; Visualizações: 634)

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

    é 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.. >(
     
  2. naoliveira

    naoliveira Power Member

    com o código que meteste parece é que ele grava todos os resgistos da flexgrid e logo 2 vezes!!!
     
  3. isso sei eu.. eu quero mesmo que ele grave todos e 2 vezes, porque ha 2 colunas para gravar.. -_-'
     
  4. naoliveira

    naoliveira Power Member

    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.
     
  5. 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
     
  6. naoliveira

    naoliveira Power Member

    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
    
     
  7. já tá.. obrigadão meu.. ;)
     

Partilhar esta Página