Aiuto aumento esponenziale database dopo query

Anonimo
2019-02-08T23:10:13+00:00

Ciao,

in azienda era stato creato un software per un lavoro e poi è stato abbandonato,

avevo necessità di utilizzare uno strumento per aiutarmi con il magazzino e me lo sono personalizzato

un pò imparando ad utilizzare access da solo.

Il Database è diviso in FE e BE e viene usato con Access runtime perchè abbiamo solamente una licenza Access ed è condiviso in rete e risiede su un pc, lo utilizziamo io e 2 miei colleghi.

In sostanza esiste una tabella dove io inserisco tutto il materiale che possiede un serial number e gli altri 2 utenti

assegnano questi alcuni di questi seriali tramite una maschera che, legge da questa tabella e ne crea un'altra

creando una "commessa" che può contenere piu oggetti e seriali, questa tabella a sua volta ne genera un'altra identica

che serve come scambio.

Quando l'utente crea la commessa si creano dei campi dove andrà ad inserire i vari serialnumber dei componenti, quando si chiude la maschera la query

va a scrivere nelle 2 tabelelle, cancella tutti i campi che non sono stati compilati e li ricopia sull'altra.

Il problema che è sorto da un po di tempo è che dopo qualche inserimento il database si ingrandisce passa da 6/7 MB e può arrivare anche 1.7GB.

Non saprei dove e cosa modificare.

La query è stata scritta così:

Option Compare Database

Private Sub Form_Close()

DoCmd.SetWarnings False

DoCmd.OpenQuery "qryUpdateRemoveBlanks1"

DoCmd.OpenQuery "qryValidateToAssignementDetails1"

DoCmd.SetWarnings True

End Sub

Private Sub Form_Current()

  Dim intMaxNumRecs As Integer

    intMaxNumRecs = DLookup("[CountOfstrPartNumber]", "qryREC12SourceDataAssemblyPN", "[strAssemblyPartNumber]= TempVars!VarAssemblyPartNumber")

    If Me.NewRecord Then

        With Me.RecordsetClone

            If .RecordCount > 0 Then

                .MoveLast:  .MoveFirst

                If .RecordCount >= intMaxNumRecs Then

                    MsgBox "This Assembly has only " & intMaxNumRecs & " Serialized Components"

                    .MoveLast

                    Me.Requery

                End If

            End If

        End With

    End If

End Sub

Private Sub Form_Error(DataErr As Integer, Response As Integer)

If DataErr = 3201 Then

MsgBox "Il seriale che hai inserito non esiste, Verifica!  The Serial Number of the Item you entered does not exist in the Database, please verify!"

Response = acDataErrContinue

ElseIf DataErr = 3022 Then

MsgBox "Il seriale che hai inserito è già stato assegnato ad un altro assieme Verifica!  The Serial Number of the Item you entered is already assigned to an assembly, please verify!"

Response = acDataErrContinue

Else

MsgBox "Error No.:" & DataErr

End If

End Sub

Private Sub strCompnentLotNumber_LostFocus()

If IsNull(Me.strCompnentLotNumber) Then

Else

Me.strDateAssigned.Value = Me.Text21.Value

Me.strTechnicianName.Value = Me.Text23.Value

Me.strTimeAssigned.Value = Me.Text25.Value

End If

End Sub

Private Sub strComponentSerialNumber_LostFocus()

If IsNull(Me.strComponentSerialNumber) Then

Else

TempVars!VarComponentSerialNumber = Me.strComponentSerialNumber.Value

Dim v As String

v = DLookup("[strPartNumber]", "tblReceivingDetails", "strComponentSerialNumber = TempVars!VarComponentSerialNumber")

    If v = strPartNumber Then

Me.strDateAssigned.Value = Me.Text21.Value

Me.strTechnicianName.Value = Me.Text23.Value

Me.strTimeAssigned.Value = Me.Text25.Value

DoCmd.RefreshRecord

DoCmd.SetWarnings False

DoCmd.OpenQuery "qryUpdateAssignementStatus"

DoCmd.SetWarnings True

    Else

    MsgBox "Il partnumber associato al seriale inserito non corrisponde a quello che dovresti inserire, probabilmente non è stato trasformato!!        The Part Number associated with the Serial Number you entered does not match the the Part Number on your sheet, Please verify?"

    DoCmd.Requery

    End If

End If

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

11 risposte

Ordina per: Più utili
  1. Anonimo
    2019-02-10T08:17:34+00:00

    Ciao

    Come dicevo sopra, la prima rimuove tutti i record nuovi (attualmente 600)

    la seconda li verifica e li riscrive, la prima posso tranquillamente eseguire e me li cancella,

    la seconda no perchè eseguita manualmente mi dice questo:

    DoCmd.OpenQuery "qryUpdateRemoveBlanks1"

    DELETE *

    FROM tblSerialNumberAssignementDetails1

    WHERE ([strComponentSerialNumber1] Is Null);

    DoCmd.OpenQuery "qryValidateToAssignementDetails1"

    INSERT INTO tblSerialNumberAssignementDetails1 ( strAssemblySerialNumber1, strComponentSerialNumber1, strDateAssigned, strTechnicianName, strTimeAssigned, strAssemblyPartNumber, strPartNumber1, strDescription1, strLotNumberAssigned1, strAssemblyType )

    SELECT tblSerialNumberAssignementDetailsTEMP.strAssemblySerialNumber, tblSerialNumberAssignementDetailsTEMP.strComponentSerialNumber, tblSerialNumberAssignementDetailsTEMP.strDateAssigned, tblSerialNumberAssignementDetailsTEMP.strTechnicianName, tblSerialNumberAssignementDetailsTEMP.strTimeAssigned, tblSerialNumberAssignementDetailsTEMP.strAssemblyPartNumber, tblSerialNumberAssignementDetailsTEMP.strPartNumber, tblSerialNumberAssignementDetailsTEMP.strDescription, tblSerialNumberAssignementDetailsTEMP.strLotNumberAssigned, tblSerialNumberAssignementDetailsTEMP.strAssemblyType

    FROM tblSerialNumberAssignementDetailsTEMP

    Il problema di rigonfiamento viene accentuato sul computer che lavora tramite wifi, es se lo faccio dal mio pc che è cablato posso fare

    molte piu operazioni mentre se viene fatto su quello in wifi la prima operazione è veloce e le successive diventano sempre piu lente dato che il BE diventa sempre piu grosso in termini di dimensioni

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-02-09T18:50:52+00:00

    Quando apri in visualizzazione struttura una query in basso a destra hai la possibilità di selezionare la vista SQL per vederne il corrispondente codice Sql del tipo "Select....."

    Dal codice che hai postato mi sembra che le uniche istruzioni che potrebbero provocare il "gonfiamento" sono le 2 query.

    Potresti provare a compattare il BE e quindi ad eseguire direttamente le due query per verificare il risultato in termini di dimensioni.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-02-09T18:38:48+00:00

    Ciao, grazie intanto,  la query remove blanks cancella da una tabella tutti i record che non sono stati ancora attrubuiti e poi vengono ricreati, in soatanza fa un controllo tra le 2 tabelle.

    Il queryvalidate devo verificarlo perchè non lo so ma penso che scriva i valori che sono stati attribuiti.le 2 tabelle sono sempre uguali.

    Il codice sql di cosa? Non so se sono in grado

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-02-09T17:20:11+00:00

    Ciao,

    immagino che ti riferisci al BE del tuo DB.

    Potresti dirci cosa fanno le due query

    DoCmd.OpenQuery "qryUpdateRemoveBlanks1"

    DoCmd.OpenQuery "qryValidateToAssignementDetails1"

    e magari postarci il codice Sql.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2019-02-09T11:13:39+00:00

    Ciao Massimo,

    siamo qui per aiutarti con Access.

    Per poter ricevere assistenza da un team di esperti che attraverso il loro strumenti saranno in grado di fornirti una soluzione veloce e completa, ti consiglio oltre ad attendere i preziosi consigli dei nostri MVP, di pubblicare il tuo post sul forum dedicato di Msdn che puoi trovare in questo link. I nostri esperti saranno pronti a rispondere a tutte le tue domande sulla funzione da te richiesta!

    Per qualsiasi altro dubbio o domanda, siamo sempre qui per te!

    Ti auguro una buona giornata!

    Claudia

    La risposta è stata utile?

    0 commenti Nessun commento