Hej Du kan ju updatera posterna. Det är enklast om du använder dig av en kombinerad nyckel. Hur blir det om man ändrar inställningarna och gör en ny beräkning. Antal lager/rader kan variera och bli fler eller färre än vid förra beräkningen. Om det blir mindre tar du bort det som är överflödiga. Annars lägger du till. Hmm kan vara ett sätt.. en tanke bara var om man inte kunde mellanlagra dem i minnet och bara skriva till databasen när man sparar beräkningen. Borde fungera om man kan spara ett recordset i minnet och uppdatera det vid beräkningen.. fast jag vet inte om det går eller hur det funkar. Några förslag? Detta kanske kan vara till hjälp.Hjälp vid lagring av data
Håller på med ett beräkningsprogram för laminatrör som har olika antal lager beroende på inställningarna. Resultatet skall lagras i en accessdatabas. Problemet är att det blir olika antal lager beroende på inställningarna och att man skall kunna ändra dessa och göra en ny beräkning på samma rör. En tanke är att radera posterna från den tidigare beräkningen för att sedan lägga in nya poster vid varje ny beräkning men det känns som om det vore onödigt att radera och lägga in nya vid varje beräkning så frågan är om det finns en smartare lösning? Jag är öppen för alla förslag
//KristerSv: Hjälp vid lagring av data
Med primärnyckeln från huvudtabellen och ett index för posten.Sv: Hjälp vid lagring av data
Sv: Hjälp vid lagring av data
Sv: Hjälp vid lagring av data
Sv: Hjälp vid lagring av data
<code>
Public Sub Calc(RörID As Long, Count As Long)
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Index As Long
Set con = New ADODB.Connection
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administratör\Mina dokument\db1.mdb"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "SELECT * FROM Beräkningar WHERE BeräkningsRör=" & RörID, con, adOpenKeyset, adLockBatchOptimistic
If rs.RecordCount < Count Then
For Index = 1 To rs.RecordCount
rs("BeräkningsVärde") = Int(Rnd * 1000) 'Beräknar värde.
rs.Update
rs.MoveNext
Next
For Index = Index To Count
rs.AddNew
rs("BeräkningsRör") = RörID
rs("BeräkningsVärde") = Int(Rnd * 1000)'Beräknar värde.
rs.Update
Next
Else
For Index = 1 To Count
rs("BeräkningsVärde") = Int(Rnd * 1000)'Beräknar värde.
rs.Update
rs.MoveNext
Next
Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop
End If
rs.UpdateBatch 'Sparar alla förändringar till databasen
rs.Close
con.Close
End Sub
</code>