View Full Version : mi serve un aiuto in access ( please)
federchicco
01-07-2003, 00:40
Come si fà ad accodare un record ad una tabella per un numero di volte pari al valore di un campo.
ESEMPIO: Se un tabella creata per registrare delle prenotazioni e inserisco i dati delle persona e il numero di giorni.
Vorrei accodare ad un'altra tabella tanti record uguali a quello di prima per il numero di volte uguale ai giorni.
Tempo fà lo facevo con db3plus e mi veniva bene ma con access non so da dove cominciare.
grazie mille
la cosa più semplice penso che sia utilizzare un'applicazione che faccia accesso ai database di access ed all'interno quindi inserire codice SQL che faccia un'insert sulla seconda tabella in base al valore della prima!
Mi dispiace, ma credo che non si possa fare una cosa del genere da Access.
Devi crearti un'applicazione che ti faccia da DBMS e gestire da codice le varie interazioni tra le tabelle del tuo Data Base.
Puoi usare ambienti di sviluppo tipo C++ Builder, Java, Visual Basic etc...
Ti crei prima il tuo Data Base con Access e poi lo gestisci con l'applicazione che ti sei realizzato.
Spero di esserti stato utile.
ciao
Mi dispiace, ma credo che non si possa fare una cosa del genere da Access.
Devi crearti un'applicazione che ti faccia da DBMS e gestire da codice le varie interazioni tra le tabelle del tuo Data Base.
Puoi usare ambienti di sviluppo tipo C++ Builder, Java, Visual Basic etc...
Ti crei prima il tuo Data Base con Access e poi lo gestisci con l'applicazione che ti sei realizzato.
Spero di esserti stato utile.
ciao
Originally posted by "federchicco"
Come si fà ad accodare un record ad una tabella per un numero di volte pari al valore di un campo.
ESEMPIO: Se un tabella creata per registrare delle prenotazioni e inserisco i dati delle persona e il numero di giorni.
Vorrei accodare ad un'altra tabella tanti record uguali a quello di prima per il numero di volte uguale ai giorni.
Tempo fà lo facevo con db3plus e mi veniva bene ma con access non so da dove cominciare.
grazie mille
Senza il bisogno di strumenti esterni, puoi usare il VBA (Visual Basic for Application) contenuto in Access.
In questo esempio ho usato la libreria Microsoft DAO (in alternativa puoi usare ADO) da caricare attraverso il menu Strumenti/Riferimenti:
Public Sub AddRecords(id As Long)
'id è la chiave primaria di Tabella1
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim i As Integer
'crea recordset su Tabella1
Set rs1 = CurrentDb.OpenRecordset("Tabella1", dbOpenDynaset)
'cerca il record in Tabella1
rs1.FindFirst "ID = " & CStr(id)
'se trova il record...
If Not rs1.NoMatch Then
'crea recordset su Tabella2
Set rs2 = CurrentDb.OpenRecordset("Tabella2", dbOpenDynaset)
'ciclo sul totale di giorni
'per ogni giorno aggiunge un record alla Tabella2
For i = 1 To rs1("NumeroGiorni")
'nuovo record
rs2.AddNew
'elenco di campi da copiare o da impostare
rs2("NomeCampo1") = rs1("NomeCampoA")
rs2("NomeCampo2") = rs1("NomeCampoB")
rs2("NomeCampo3") = i
'etc
'scrive record
rs2.Update
Next
MsgBox "Records creati!"
'... altrimenti...
Else
MsgBox "Record origine non trovato"
End If
'chiude gli oggetti
rs1.Close
rs2.Close
Set rs1 = Nothing
Set rs2 = Nothing
End Sub
Questa procedura la puoi caricare in un modulo dentro al VBA (menu Strumenti/Macro/Visual Basic Editor).
Nella tua maschera dovrai inserire un pulsante per la creazione dei record nella Tabella2, collegato ad un evento anch'esso scritto in VBA:
Private Sub Comando6_Click()
Call AddRecords(ID.Value)
End Sub
Ovviamente, "Comando6" è un nome indicativo e dipende dalla tua maschera. ID è il nome della casella di testo contenente la chiave primaria.
federchicco
02-07-2003, 16:22
Ti ringrazio moltissimo per l'aiuto e vedo che la procedura somiglia vagamente a quella che facevo in db3plus.
Se posso abusare della tua cortesia ti spiego in dettaglio cosa devo fare.
TABELLA PRENOTAZIONI:
DATA: 01/07/2003
CLIENTE: ROSSI
GIORNI : 4
CAMERA: 10
PREZZO: 100.00
Io dovrei in questo caso creare 4 record nella tabella STORICO quanti sono i giorni con la data che va avanti fino ad arrivare al 05/07/2003.
GRAZIE UN MILIONE DI €
Se avessi l'elenco esatto dei campi delle tue tabelle potrei essere più preciso. Ho supposto queste tabelle:
Prenotazioni: ID, Data, Cliente, Giorni, Camera, Prezzo
Storico: ID, Data, Cliente, Camera, Prezzo
In entrambe le tabelle, ID è un contatore e chiave primaria.
Public Sub AddRecords(id As Long)
'id è la chiave primaria di Prenotazioni
'questa sub richiede DAO
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim i As Integer
'crea recordset su Prenotazioni
Set rs1 = CurrentDb.OpenRecordset("Prenotazioni", dbOpenDynaset)
'cerca il record in Prenotazioni
rs1.FindFirst "ID = " & CStr(id)
'se trova il record...
If Not rs1.NoMatch Then
'crea recordset su Storico
Set rs2 = CurrentDb.OpenRecordset("Storico", dbOpenDynaset)
'ciclo sul totale di giorni
'per ogni giorno aggiunge un record alla Storico
For i = 1 To rs1("Giorni")
'nuovo record
rs2.AddNew
'elenco di campi da copiare o da impostare
rs2("Data") = rs1("Data") + i
rs2("Cliente") = rs1("Cliente")
rs2("Camera") = rs1("Camera")
rs2("Prezzo") = rs1("Prezzo")
'scrive record
rs2.Update
Next
MsgBox "Records creati!"
'... altrimenti...
Else
MsgBox "Record origine non trovato"
End If
'chiude gli oggetti
rs1.Close
rs2.Close
Set rs1 = Nothing
Set rs2 = Nothing
End Sub
federchicco
02-07-2003, 18:43
Sei grande.
ho provato ed ho risolto.
Grazie davvero molto
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.