Condividi:        

[Access] - Utilizzo "CanGrow" e "copia Record"

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Access] - Utilizzo "CanGrow" e "copia Record"

Postdi nonimpareromai » 21/10/08 09:12

ciao a tutti,
volevo chiedervi un aiutino per risolvere due problemi che ho incontrato nella realizzazione di un dB con Access2003 SP2:

>>>>Ho creato un report in cui tabulo dei dati in 4 colonne; utilizzando l'opzione "CanGrow" mi si verifica lo spiacevole effetto visivo di avere celle in orizzontale con altezze (evidenziate da bordi) diverse!
Come posso fare in modo che se aumenta l'altezza di una casella, aumenti allo stesso modo anche l'altezza delle caselle affiancate sulla stessa riga?

>>>>Ho creato una maschera + sottomaschera ed ho aggiunto un pulsante "copia record": Il problema è che copia solo il record della maschera principale e non tutti i dati della sottomaschera! E' possibile con del codice o con qualche funzione fare in modo di inserire un tasto (o altro) che mi permetta di copiare il record contenuto nella maschera e tutti i dati delle sottomaschere correlate nella stessa vista (della stessa query) in un nuovo record.
nonimpareromai
Utente Junior
 
Post: 16
Iscritto il: 21/10/08 08:24

Sponsor
 

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi archimede » 21/10/08 12:03

nonimpareromai ha scritto:Come posso fare in modo che se aumenta l'altezza di una casella, aumenti allo stesso modo anche l'altezza delle caselle affiancate sulla stessa riga?
Se ho capito bene, mi sa che l'unica soluzione sia togliere i bordi dai tuoi controlli.
nonimpareromai ha scritto:E' possibile con del codice o con qualche funzione fare in modo di inserire un tasto (o altro) che mi permetta di copiare il record contenuto nella maschera e tutti i dati delle sottomaschere correlate nella stessa vista (della stessa query) in un nuovo record.
Basta aggiungere al bottone che hai già il comando SQL per copiare i records della tabella correlata. Ovviamente dovrai prima recuperare la chiave primaria del nuovo record creato (suppongo un autonumber), dopodiché dovrebbe essere banale.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi nonimpareromai » 21/10/08 14:19

>>>>peccato per i bordi, che servirebbero a dare l'idea/creare una tabella con griglia vera e propria!!!!

>>>>per l'SQL da aggiungere al tasto ....un esempio.....chiedo troppo?!?!?!?!?!?!?

grazie in anticipo per la cortese attenzione.

ciao
nonimpareromai
Utente Junior
 
Post: 16
Iscritto il: 21/10/08 08:24

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi nonimpareromai » 21/10/08 14:19

>>>>peccato per i bordi, che servirebbero a dare l'idea/creare una tabella con griglia vera e propria!!!!

>>>>per l'SQL da aggiungere al tasto ....un esempio.....chiedo troppo?!?!?!?!?!?!?

grazie in anticipo per la cortese attenzione.

ciao
nonimpareromai
Utente Junior
 
Post: 16
Iscritto il: 21/10/08 08:24

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi archimede » 21/10/08 15:41

nonimpareromai ha scritto:un esempio.....chiedo troppo?
Posta la struttura delle tue tabelle, le relazioni fra di esse e l'attuale codice del tuo pulsante.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi nonimpareromai » 21/10/08 20:27

>>>Tabella_Ingrediente
ID_Ingrediente
ID_Ricetta
Nome_Ingrediente
Peso_Ingrediente
******************************************************************************************
>>>Tabella_Ricetta
ID_Ricetta
Titolo_Ricetta
Procedura
Note
********************************************************************************************

codice: Duplica Record
-----------------------------------------------------------------------------------------------------------
Codice: Seleziona tutto
Private Sub Comando8_Click()
On Error GoTo Err_Comando8_Click

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append

Exit_Comando8_Click:
    Exit Sub
Err_Comando8_Click:
    MsgBox Err.Description
    Resume Exit_Comando8_Click
   
End Sub
---------------------------------------------------------------------------------------------------------------------

non sono riuscito a mandare un allegato: '.JPG' >1 Mb; altre estensioni provate non risultano ammesse!

spero che si capisca comunque....
grazie per la pazienza :oops:

ciao
nonimpareromai
Utente Junior
 
Post: 16
Iscritto il: 21/10/08 08:24

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi archimede » 22/10/08 08:18

Questo codice NON è testato, ma dovrebbe metterti sulla buona strada:
Codice: Seleziona tutto
Private Sub Comando8_Click()
    Dim sSQL As String
    Dim db As DAO.Database
    Dim lngIDRic As Long

    Set db = DBEngine(0)(0)

    If Me.Dirty Then
        Me.Dirty = False
    End If
    If Me.NewRecord Then
        MsgBox "Seleziona la ricetta da duplicare."
    Else
        'Duplica la ricetta
        With Me.RecordsetClone
            .AddNew
                !Titolo_Ricetta = Me.Titolo_Ricetta
                !Procedura = Me.Procedura
                !Note = Me.Note
            .Update
            .Bookmark = .LastModified
            lngIDRic = !ID_Ricetta

            'Duplica gli ingredienti
            If Me.nomeFormDettaglio.Form.RecordsetClone.RecordCount > 0 Then
                sSQL = "INSERT INTO Tabella_Ingrediente (ID_Ricetta, Nome_Ingrediente, Peso_Ingrediente) " & _
                    "SELECT " & lngIDRic & " As NewID_Ricetta, i.Nome_Ingrediente, i.Peso_Ingrediente" & _
                    "  FROM Tabella_Ingrediente As i" & _
                    " WHERE (i.ID_Ricetta = " & Me.ID_Ricetta & ");"
                db.Execute sSQL, dbFailOnError
            Else
                MsgBox "Ricetta duplicata, ma nessun ingrediente trovato.", vbInformation, "Information"
            End If

            'Visualizza la nuova ricetta
            Me.Bookmark = .LastModified
        End With
    End If

    Set db = Nothing
End Sub
HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi nonimpareromai » 22/10/08 20:05

VBA! che passione.... mi attiva i neuroni nelle sue infinite opportunità di utilizzo (e nelle mie poche esperienze con excel).....
..peccato che ci siano pochi testi sacri... :-?

Comunque ho provato ad analizzare/comprendere il codice proposto, ma mi torvo in difficoltà con la sintassi del "nomeFormDettaglio"...accidenti all'ignoranza!!!!! :-? :-? :-? :-?
ho dato anche una sbirciatina all'help in linea, ma nulla...

nel dB ci sono due Forms:

>>>F_Ricetta
>>>SF_Ingrediente (ovviamente, sottomaschera del precedente)

Codice: Seleziona tutto
If Me.nomeFormDettaglio.Form.RecordsetClone.RecordCount > 0 Then


protresti suggerirmi la sintassi adattata, magari la regola generale????

a quest'ora incomincio a dare segni da ""cerebroleso"" :oops: :oops:
grazie
nonimpareromai
Utente Junior
 
Post: 16
Iscritto il: 21/10/08 08:24

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi archimede » 22/10/08 21:58

If Me.SF_Ingrediente... ecc.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi nonimpareromai » 24/10/08 11:36

Codice: Seleziona tutto
If Me.SF_Ingrediente.Form.RecordsetClone.RecordCount > 0 Then


questo è il codice che utilizzo; ho verificato anche eventuali errori di "battitura", ma viene sempre fuori lo stesso messaggio di errore:

"errore di compilazione: Impossibile trovare il metodo o il membro dei dati"
nonimpareromai
Utente Junior
 
Post: 16
Iscritto il: 21/10/08 08:24

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi archimede » 24/10/08 12:47

Beh, io avevo detto che il codice non è testato: purtroppo non ho Access per fare prove (uso Linux).

Prova a eseguire comunque l'INSERT togliendo l'if (e anche l'else, naturalmente): è solo un controllo nel caso in cui copi una ricetta che non ha ingredienti.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi nonimpareromai » 25/10/08 14:36

...bypassando l'If, then..... è andato tutto perfettamente!

grazie per l'aiuto e la pazienza.... :) :) :) :) :) :) :) :lol: :lol: :lol: :lol: :D :D :D :D
nonimpareromai
Utente Junior
 
Post: 16
Iscritto il: 21/10/08 08:24

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi salfacilepc » 26/09/17 14:40

duplicare record da maschera con due sottomaschere

buongiorno,
(spero sia giusto continuare questo thread)

ho seguito il vostro codice, ma io ho 3 form in cascata relative a 3 tabelle distinte, mi spiego meglio:

Tab1 -- campi -- IDcontratto (contatore chiave primaria 1 a molti legato al campo idcontratto2 della Tab2)
datacontratto
clientecontratto

Tab2 -- campi -- IDdescrizione (contatore chiave primaria 1 a molti legato al campo iddescrizione2 della Tab3)
idcontratto2 (figlia della PK precedente)
datadescrizione
notedescrizione

tab3 -- campi -- IDdettaglio (contatore chiave primaria)
iddescrizione2 (figlia della PK precedente)
dettaglioNote

Le form si chiamano Maschera1, Sottomaschera2, Sottosottomaschera3 e i campi di queste hanno lo stesso nome dei campi delle tabelle da cui hanno origine.

Ho provato e la creazione del db funziona solo quando devo duplicare le prime due tabelle, con la terza no. Provo a mandarvi uno "schema" del codice che faccio partire da Maschera1:

Codice: Seleziona tutto
1    Dim sSQL As String
2   Dim sSQL2 As String
3    Dim db As DAO.Database
4    Dim lngIDcontratto As Long
5    Dim lngIDdescrizione As Long

6    Set db = DBEngine(0)(0)
7.........
8            'PRIMA ROUTINE WITH codice che duplica primo record
9            With Me.RecordsetClone
10            .AddNew 'Crea un nuovo record
11      .....
12            .Update
13            .Bookmark = .LastModified
14            lngIDcontratto = !IDcontratto 'PK chiave primaria della tabella1
15           ..... codice SQL che duplica i campi di Form2 '
16         db.Execute sSQL, dbFailOnError 'fin qua come da vs codice

'seconda parte routine
17                       sSQL2 = "INSERT INTO tab3 (iddescrizione2, dettaglioNote) " & _
18                        "SELECT " & IDdescrizione & " As NewIDdettaglio,  i.dettaglioNote" & _
19                        "  FROM tab3 As i" & _
20                        " WHERE (i.iddescrizione2 = " & Forms! Maschera1! Sottomaschera2.IDdescrizione & ");"

21                        db.Execute sSQL2, dbFailOnError
22                        Me.Bookmark = .LastModified

23                 Me.Bookmark = .LastModified
24                 End With
25    End If

26    Set db = Nothing
27    End If



Si blocca al codice della variabile sSQL2 alla riga 20 con l'errore "run time 438 proprietà o metodo non supportati dall’oggetto", e non crea i record della Sottosottomaschera3. Controllato
Codice: Seleziona tutto
Forms! Maschera1! Sottomaschera2.IDdescrizione
, I nomi delle maschere sono giusti.

Qualcuno può aiutarmi?
salfacilepc
Newbie
 
Post: 2
Iscritto il: 25/09/17 10:58

Postdi archimede » 29/09/17 14:46

IDdescrizione esiste ed è correttamente valorizzato? Non sarà che devi usare lngIDdescrizione?

HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access] - Utilizzo "CanGrow" e "copia Record"

Postdi salfacilepc » 07/01/18 18:16

Grazie Alessandro della risposta. Sì IDdescrizione esiste ed è correttamente valorizzato.
Ho pensato di rifare un nuovo post che non tenga in conto il mio post precedente (il precedente non son riuscita a cancellarlo).

Praticamente ho lo stesso problema dell'utente "nonimpareromai" ma con 3 maschere.
Il file del db l'ho messo in condivisione all'indirizzo:
https://drive.google.com/open?id=1qHg-g ... PjWFOynFs4


Ho creato una nuova TabellaLotto coi campi:
IDLotto (PK) Numerazione automatica
ID_IngredienteSottomaschera Numerico (figlia della relazione col campo ID_Ingrediente (PK) della TabellaIngrediente)
DescrizioneLotto Testo breve
DataLotto Data/ora
Da questa tabella ho creato la form SSF_Lotto di tipo "foglio dati" con i 4 campi nominati ID_lottoF, ID_IngredienteSottomascheraF, DescrizioneLottoF, DataLottoF.


Il codice del bottone della prima maschera che duplica le sottomaschere è questo, ma non sono riuscito a duplicare la terza sottomaschera:

Codice: Seleziona tutto
Option Compare Database
Option Explicit

Private Sub Comando19_Click()
Dim Messaggio1 As String

Messaggio1 = MsgBox("Sto duplicando l'evento che stai visualizzando in questo momento! Vuoi proseguire con la duplicazione?", vbYesNo)
If Messaggio1 = vbNo Then
Exit Sub
Else
   
    Dim sSQL As String
    Dim db As DAO.Database
    Dim lngIDRic As Long
    Dim lngIDIngr As Long
    Dim sSQL2 As String

    Set db = DBEngine(0)(0)

    If Me.Dirty Then
        Me.Dirty = False
    End If
    If Me.NewRecord Then
        MsgBox "Seleziona la ricetta da duplicare."
    Else

        'Duplica la ricetta (maschera principale)
        With Me.RecordsetClone
            .AddNew 'Crea un nuovo record della form
                !Titolo_Ricetta = Me.Titolo_RicettaF 'campo Tabella1 = campo form
                !Procedura = Me.ProceduraF 'campo Tabella1 = campo form
                !Note = Me.NoteF 'campo Tabella1 = campo form
            .Update
            .Bookmark = .LastModified 'sposta all'ultimo modificato
            lngIDRic = !ID_Ricetta 'variabile = campo Tabella1

            '>>>>>>Duplica gli ingredienti (maschera secondaria TabellaIngrediente) INIZIO
                sSQL = "INSERT INTO TabellaIngrediente (ID_RicettaSottomaschera, Nome_Ingrediente, Peso_Ingrediente) " & _
                    "SELECT " & lngIDRic & " As NewID_RicettaSottomaschera, i.Nome_Ingrediente, i.Peso_Ingrediente" & _
                    "  FROM TabellaIngrediente As i" & _
                    " WHERE (i.ID_RicettaSottomaschera = " & Me.ID_RicettaF & ");"

                db.Execute sSQL, dbFailOnError
            '>>>>>>Duplica gli ingredienti (maschera secondaria TabellaIngrediente) FINE

                sSQL2 = "INSERT INTO TabellaLotto (ID_IngredienteSottomaschera, DescrizioneLotto, DataLotto) " & _
                    "SELECT " & lngIDIngr & " As NewID_IngredienteSottomaschera, i.DescrizioneLotto, i.DataLotto" & _
                    "  FROM TabellaLotto As i" & _
                    " WHERE (i.ID_IngredienteSottomaschera = " & Me.ID_IngredienteF & ");"
                db.Execute sSQL2, dbFailOnError

            'Visualizza la nuova ricetta
            Me.Bookmark = .LastModified 'sposta all'ultimo modificato
        End With
    End If

    Set db = Nothing

    End If

MsgBox "Il record e la sottomaschera è stata duplicata con successo, come puoi vedere.", vbInformation + vbOKOnly, "Informazioni"

End Sub


Praticamente al codice originale ho aggiunto 2 dimensionamenti
Codice: Seleziona tutto
    Dim lngIDIngr As Long
    Dim sSQL2 As String


e le 4 righe
Codice: Seleziona tutto
                sSQL2 = "INSERT INTO TabellaLotto (ID_IngredienteSottomaschera, DescrizioneLotto, DataLotto) " & _
                    "SELECT " & lngIDIngr & " As NewID_IngredienteSottomaschera, i.DescrizioneLotto, i.DataLotto" & _
                    "  FROM TabellaLotto As i" & _
                    " WHERE (i.ID_IngredienteSottomaschera = " & Me.ID_IngredienteF & ");"
                db.Execute sSQL2, dbFailOnError


Ho provato anche cambiando la riga where con:
Codice: Seleziona tutto
" WHERE (i.ID_IngredienteSottomaschera = " & Forms!F_Ricetta!SF_Ingrediente.ID_IngredienteF & ");"


Ma, idem.

Intuisco che devo lavorare sul secondo SQL (@ Alessandro la mia risposta tardiva deriva che mi sono ristudiata meglio il SQL e il DAO, provando in questo mese purtroppo senza successo ) ma non riesco ad accodare i campi filtrandoli col Where.

Qualcuno può aiutarmi?
:( Grazie
salfacilepc
Newbie
 
Post: 2
Iscritto il: 25/09/17 10:58

Postdi archimede » 20/01/18 09:21

Posta la struttura delle tue tabelle, le relazioni fra di esse, l'attuale codice del tuo pulsante e l'esatto errore che ti da'.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova


Torna a Applicazioni Office Windows


Topic correlati a "[Access] - Utilizzo "CanGrow" e "copia Record"":


Chi c’è in linea

Visitano il forum: Nessuno e 109 ospiti