Newsgroup: it.comp.appl.access
Titolo: Copiare record precedente in una maschera

Ciao a tutti. Mi trovo in una maschera di immissione dati (visualizzazione
maschera singola) e vorrei alla pressione di un tasto copiare il contenuto
del record precedente interamente. Non ogni volta che creo un nuovo record,
ma solo all'occorrenza e quindi con la pressione di un tasto specifico
.Qual'e' il modo migliore ??? Grazie

 ha scritto nel messaggio
news:xeP6a.156098$ZE.45...@twister2.libero.it...

inserisci questo codice nel form sostituento i nomi del CommandButton, della
tabella e del CampoContatore (se ne esiste uno):
Private sub Comando_Click()
Dim Rec As DAO.Recordset
Dim Fi As DAO.Field
Dim SQLv As string, SQLn As string
Dim SQL As string, Test As String
Const FiID As String = "CampoContatore"
Set Rec = Me.RecordSetClone
With Rec
    If .AbsolutePosition > 1 Then
        .MovePrevieus
        For Each Fi in .Fields
            Test = Fi.Name
            If Test <> FiID Then
                SQLn = SQLn & "," & Fi.Name
                SQLv = SQLv & "," & GetFieldValue(Fi)
            End If
        Next
    Else
        Msgbox "nessun record precedente"
        Exit Sub
    End If
End With
SQLn = Mid$(SQLn, 2)
SQLv = Mid$(SQL, 2)
SQL = "INSERT INTO NomeTabella (" & SQLn & ") VALUES (" & SQLv  & ")"
CurrentDb.Execute SQL
End sub
Private Function GetFieldValue(Fi as DAO.Field) As String
    Dim Test
    Test = Fi.Value
    If Not Isnull(Test) Then
        Select Case Fi.Type
        Case dbChar, dbMemo: GetFieldValue = "'" &
replace(Cstr(test),"'","''") & "'"
        Case dbDate: GetFieldValue = "#" & Format$(Cstr(test),"mm/dd/yyyy")
& "#"
        Case Else: GetFieldValue = Test
        End Select
    Else
        GetFieldValue = "Null"
    End If
End Function
Ciao, omnitow

 ha scritto nel messaggio
news:8oQ6a.155143$YG2.4...@twister1.libero.it...

Più difficile non c'era.....?
Semplifico non inserendo il controllo EOF e quello degli errori.
Dim rs as recordset
Dim rst as recordset
Dim x as integer
set rst=Me.RecordsetClone
Set rs=rs.clone
rs.movelast
rst.addnew
for x=0 to rs.fields.count-1
    rst.field(x)=rs.fields(x)
next
rst.update
Me.Requery
@Alex.

 Grazie, provero'

 Grazie anche a te

 news:xeP6a.156098$ZE.45...@twister2.libero.it...
[...]

[...]
    Se migliore non so, ma in certi casi il metodo seguente puo' essere
utile:
    Chiamo il pulsante di comando "pdcGetPrvRow".
Option Base 0
Option Compare Database
Option Explicit
Private Sub pdcGetPrvRow_Click()
  Dim oDaoRst As DAO.Recordset
  Dim a_vRows As Variant
  Dim lCol    As Long
  Dim lRow    As Long
  Set oDaoRst = Me.RecordsetClone
  With oDaoRst
    .Bookmark = Me.Bookmark
    .MovePrevious
    If (.BOF = True) Then
      MsgBox "Nessun Record"
    Else
      a_vRows = .GetRows(1)
      For lRow = LBound(a_vRows, 2) To UBound(a_vRows, 2)
        For lCol = LBound(a_vRows, 1) To UBound(a_vRows, 1)
          Debug.Print .Fields.Item(lCol).Name;
          Debug.Print "='"; a_vRows(lCol, lRow); "'"
        Next
      Next
    End If
  End With
  Set oDaoRst = Nothing
End Sub
--
Ciao :o)
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:b3hska$1lunj5$1...@ID-52090.news.dfncis.de...

Ti ringrazio molto, provero'

       a_vRows = .GetRows(1)
[...]
Ciao Maurizio
Vedo che utilizzi il metodo GetRows ed iteri nell'array derivante, (sono
curioso) questa scelta è a seguito di test con risultati migliori rispetto
all'iterazione dell'oggetto Field nell'insieme Fields o cos'altro?
Omnitow

 all'iterazione dell'oggetto Field nell'insieme Fields o cos'altro?
    Cos'altro. :-)
    E' un metodo utile quando interessa solamente ottenere un array coi
dati e si vogliano "perdere i contatti" col recordset o addirittura col
database. Per esempio per passare l'array a qualche routine... o
controllo...



concordo, anch'io lo trovo molto utile, anche se non lo utilizzo spesso...
comunque penso che meno si ha a che fare con gli oggetti (brutte bestie :-)
meglio č
Ciao, omnitow