Newsgroup: it.comp.appl.access
Titolo: pass-through di accodamento

Buonasera
 
Dovrei accodare i valori di una tabella di access in una tabella in mysql.
 
Potete aiutarmi a farlo con una query pass-through
Attualmente utilizzo le tabelle collegate, ma la velocità dell'accodamento è molto lenta.
 
Le tabelle da accodare possono essere al massimo 1000 e all'interno ci sono parecchi campi in rtf
 
Grazie
 
Ringhitt

Non comprendo bene... se le tabelle sono in Access a cosa servirebbe una query PT..? 
Devi proprio copiare i dati da Access a MySql.
La cosa che mi lascia perplesso oltremodo è il fatto che dici di avere 1000 tabelle..? 
Mai viste così tante tabelle...
Sei sicuro di aver strutturato secondo almeno le prime 3 forme Normali..? 
 
@Alex


Buongiorno Alex
Mi sono espresso male
Ho dei dati su una tabella in access che devo riportare su una tabella mysql
Non sono 1000 tabelle ma 1000 record al massimo che devo trasferire da access a mysql
La query PT mi serve per velocizzare il processo di trasferimento dati.
 

 La query PT mi serve per velocizzare il processo di trasferimento dati.
 
Se sai come funziona una Query PT la tua richiesta ha già una risposta, o meglio non continueresti a dire che ti serve una Q_PT...!
Mi sorge il dubbio infatti tu non abbia ben chiaro come funziona una Q_PT e che, per sentito dire, tu abbia letto che sono più veloci... ma senza entrare nel merito... quindi ti suggerisco di riflettere sulla tua richiesta.
 
LE Q_PT vengono eseguite lato SERVER, quindi ti chiedo, il Motore del SERVER di MySQL cosa ne sa delle Tabelle che hai nel CLIENT...? 
 
In merito alla tua azione, un trasferimento di 1000Records non puo rallentare, se hai la Tabelle correttamente indicizzata nella selezione, ne consegue che la tua problematica è quanto meno da studiare in quanto impossibile a meno di gravi deficit di impostazioni.
 
@Alex


Grazie Alex
 
Si credo di sapere cosa è una PT, ma volevo verificare se l'inserimento dei dati su mysql con una query pt creata creata dinamicamente con i valori desunti da un recordset fosse più veloce.
 
Allora ti faccio un'altra domanda, secondo te 6 secondi per scrivere 80 righe su mysql non sono troppe?
 
la tabella del database su mysql non posso modificarla io in quanto è di un programma di contabilità e non è stata creata da me.
 
Comunque ho capito che devo abbandonare questa cosa che mi era venuta in mente.
 
Nell'applicazione che uso utilizzo le PT come eliminazione di dati sul server, con codice preso dal tuo sito.
 
Ringhitt
 
 
 

Una PT con i dati desunti da un Recordset...
Quando hai voglia spiega questa affermazione perché fatico a capirla... va bene anche un grafico...
 
6 secondi sono un valore che in se non dice nulla... 
Purtroppo non hai dato nessun dettaglio tecnico e personalmente sono più propenso a pensare che ci sia qualche grosso problema...
Solo per curiosità posta la query di inserimento... spiegaci se i campi sono indicizzati, se esiste una chiave primaria e di che tipo è lato server...
Insomma parliamo in modo tecnico altrimenti facciamo solo polvere.
 
@Alex


Allora
Server Mysql 5.7 con engine MyIsam
 
I dati sono indicizzati su mysql
esiste una chiave primaria e parecchi altri indici che vanno dal numero del progressivo alla sequenza ecc ecc
Sulla tabella in access i dati non sono indicizzati in quanto contiene solo i nuovi record da trasferire su mysql, record che non vanno in contrasto con gli indici di mysql, per questo ho delle funzioni apposite.
 
la tabella in access si chiama pvr
la tabella in mysql si chiama pvr1
 
questa è l'sql della query di accodamento
 
INSERT INTO pvr1 ( PROGRESSIVO, RIGA, ART_CODICE, QUANTITA, QUANTITA_EVASA, PREZZO, TSM_CODICE, IMPORTO, IMPORTO_EURO, IMPORTO_EVASO, DOCUMENTO_ORIGINE, TIPO_MOVIMENTO, DOC_PROGRESSIVO_ORIGINE, DOC_RIGA_ORIGINE, NUMERO_COLLI, NUMERO_COLLI_EVASI, NUMERO_CONFEZIONI, NUMERO_CONFEZIONI_EVASE, IMPORTO_IVA, IMPORTO_IVA_EURO, TIV_CODICE, GEN_CODICE, GEN_CODICE_STORNO, PERCENTUALE_PROVVIGIONI, PERCENTUALE_PROVVIGIONI_CA, IMPORTO_PROVVIGIONI, IMPORTO_PROVVIGIONI_CA, IMPORTO_PERCENTUALE_PROVVIGIONI, IMPORTO_PERCENTUALE_PROVV_CA, IMPORTO_STATISTICO_INTRA, [NOTE], NOTE_ART, SITUAZIONE, SALDO_ACCONTO, UTENTE, DATA_ORA, PREZZO_NETTO, DATA_CONSEGNA, DESCRIZIONE1, DESCRIZIONE2, QUANTITA_APPRONTATA, PREZZO_BLOCCATO, NOTE_INTERNE, EVADERE_NOTE, TMA_CODICE, TSM_CODICE_ART, EVADOC_NUMERO_COLLI, EVADOC_NUMERO_CONFEZIONI, EVADOC_QUANTITA, EVADOC_PREZZO, EVADOC_IMPORTO, EVADOC_SALDO_ACCONTO, EVADOC_TSM_CODICE, EVADOC_TSM_CODICE_ART, EVADOC_TIPO_MOVIMENTO, EVADOC_DATA_CONSEGNA, INIZIO_CONFIGURAZIONE, FINE_CONFIGURAZIONE, RIGA_DDT, CONFIGURAZIONE, SALDO_ACCONTO_APPRONTATO, STAMPA_CONFIGURAZIONI, PREZZI_CONFIGURAZIONE, TMA_CODICE_COLLEGATO, TVA_CODICE, PERCENTUALE_OSCILLAZIONE_CAMBIO, UTENTE_CREAZIONE, DATA_ORA_CREAZIONE, DATA_INIZIO_COMPETENZA, DATA_FINE_COMPETENZA, QUANTITA_COLLO, TIM_CODICE, EVADERE_APPRONTATO, IMPORTO_SCONTO, EVADOC_IMPORTO_SCONTO, IMPORTO_SCONTO_EVASO, TUM_CODICE, RIGA_ORIGINE_CONAI, TR1_CODICE, ESENZIONE_CONAI, NO_FATTURA, SEQUENZA, IGNORA_NOTE_ART, DIMENSIONE1, DIMENSIONE2, DIMENSIONE3, VARIANTI_DINAMICHE, KIT, QUANTITA_KIT, FORMULA, NO_IMPEGNATO, CMS_CODICE, TIPOLOGIA, TOTALE_PROGRESSIVO, LOTTO, ID_ECOMMERCE, IVA_BLOCCATA, PREZZO_NETTO_LISTINO, CEN_CODICE, TVC_CODICE, QUANTITA_CONAI, QUANTITA_UNITARIA_CONAI, PERCENTUALE_ESENZIONE_CONAI, NUMERO_COLLI_APPRONTATO, NUMERO_CONFEZIONI_APPRONTATO, CAT_PROGRESSIVO, ID_VTIGER, ARTP_CODICE, evadoc_saldo_materie_prime, evadoc_scarti, lavvet, lavvet_perimetro, punto_vendita, soggetto_addebito_enasarco, tea_codice, tum_quantita_base, tum_quantita_evasa_base, tum_quantita_approntata_base, evadoc_tum_quantita_base, tipo_imballaggio, percentuale_sconto_globale_riga, percentuale_sconto_globale_riga2, percentuale_sconto_globale_riga3, ART_CODICE_PADRE, pesoriga, QUANTITA_PADRE, univocopvr, larghezza, altezza, pesounitario, profondita, COSTO_UNITARIO )
SELECT pvr.PROGRESSIVO, pvr.RIGA, pvr.ART_CODICE, pvr.QUANTITA, Nz([QUANTITA_EVASA],0) AS eva, pvr.PREZZO, Nz([TSM_CODICE],0) AS ttttsm, pvr.IMPORTO, pvr.IMPORTO_EURO, 0 AS ev, Nz([DOCUMENTO_ORIGINE],"") AS ddocor, pvr.TIPO_MOVIMENTO, 0 AS DOC_PROGRESSIVO_ORIGINES, 0 AS DOC_RIGA_ORIGINES, Nz([NUMERO_COLLI],0) AS COL, Nz([NUMERO_COLLI_EVASI],0) AS COE, Nz([NUMERO_CONFEZIONI],0) AS NCF, Nz([NUMERO_CONFEZIONI_EVASE],0) AS NCF1, pvr.IMPORTO_IVA, pvr.IMPORTO_IVA_EURO, pvr.TIV_CODICE, Nz([GEN_CODICE],"") AS gggencod, Nz([GEN_CODICE_STORNO],"") AS ggcodsto, Nz([PERCENTUALE_PROVVIGIONI],0) AS PP, Nz([PERCENTUALE_PROVVIGIONI_CA],0) AS PP1, Nz([IMPORTO_PROVVIGIONI],0) AS PP3, Nz([IMPORTO_PROVVIGIONI_CA],0) AS PP4, Nz([IMPORTO_PERCENTUALE_PROVVIGIONI],0) AS PP5, Nz([IMPORTO_PERCENTUALE_PROVV_CA],0) AS PP6, Nz([IMPORTO_STATISTICO_INTRA],0) AS Espr1, pvr.NOTE, "no" AS NOTE_ART, pvr.SITUAZIONE, Nz([SALDO_ACCONTO],"") AS ssacc, pvr.UTENTE, pvr.DATA_ORA, Nz([PREZZO_NETTO],"0.000000") AS ppnett, pvr.DATA_CONSEGNA, pvr.DESCRIZIONE1, pvr.DESCRIZIONE2, 0 AS appr, "si" AS blocc, pvr.NOTE_INTERNE, "si" AS evanot, 1 AS TMA_CODICEs, Nz([TSM_CODICE_ART],"") AS tttsssmmcodart, 0 AS EVADOC_NUMERO_COLLIs, 0 AS EVADOC_NUMERO_CONFEZIONI, 0 AS EVADOC_QUANTITA, 0 AS EVADOC_PREZZO, 0 AS EVADOC_IMPORTO, Nz([EVADOC_SALDO_ACCONTO],"") AS eevvaadd, Nz([EVADOC_TSM_CODICE],"") AS eeva2, Nz([eVADOC_TSM_CODICE_ART],"") AS Eeeva3, Nz([EVADOC_TIPO_MOVIMENTO],"") AS eva4, pvr.EVADOC_DATA_CONSEGNA, "no" AS INIZIO_CONFIGURAZIONEs, "no" AS FINE_CONFIGURAZIONEs, "no" AS RIGA_DDTs, 0 AS CONFIGURAZIONEs, "no" AS SALDO_ACCONTO_APPRONTATOs, "no" AS STAMPA_CONFIGURAZIONIs, "no" AS PREZZI_CONFIGURAZIONEs, Nz([TMA_CODICE_COLLEGATO],"") AS ttmmaaccll, Nz([TVA_CODICE],"") AS tttvacodice, 0 AS PERCENTUALE_OSCILLAZIONE_CAMBIOs, fUserName() AS ut, pvr.DATA_ORA_CREAZIONE, pvr.DATA_INIZIO_COMPETENZA, pvr.DATA_FINE_COMPETENZA, Nz([QUANTITA_COLLO],0) AS qcol, Nz([TIM_CODICE],"") AS ttimc, Nz([EVADERE_APPRONTATO],"") AS evadappr, pvr.IMPORTO_SCONTO, Nz([EVADOC_IMPORTO_SCONTO],0) AS evadocimps, Nz([IMPORTO_SCONTO_EVASO],0) AS impsceva, pvr.TUM_CODICE, 0 AS RIGA_ORIGINE_CONAIs, Nz([TR1_CODICE],"") AS ttr1cod, "no" AS ESENZIONE_CONAIs, "no" AS NO_FATTURAs, pvr.SEQUENZA, "no" AS IGNORA_NOTE_ARTs, Nz([DIMENSIONE1],0) AS d1, Nz([DIMENSIONE2],0) AS d2, Nz([DIMENSIONE3],0) AS d3, "no" AS VARIANTI_DINAMICHEs, "no" AS KITs, 0 AS QUANTITA_KITs, Nz([FORMULA],"") AS fform, "no" AS NO_IMPEGNATOs, Nz([CMS_CODICE],"") AS ccmscod, Nz([TIPOLOGIA],"") AS ttipsss, "no" AS TOTALE_PROGRESSIVOs, Nz([LOTTO],"") AS lllotto, Nz([ID_ECOMMERCE],"") AS idcomm, Nz([IVA_BLOCCATA],"no") AS ivablocc, Nz([PREZZO_NETTO_LISTINO],"0.000000") AS prnelis, Nz([CEN_CODICE],"") AS cccencod, Nz([TVC_CODICE],"") AS ttvvcc, 0 AS QUANTITA_CONAIs, 0 AS QUANTITA_UNITARIA_CONAIs, 0 AS PERCENTUALE_ESENZIONE_CONAIs, Nz([NUMERO_COLLI_APPRONTATO],0) AS ncaa, Nz([NUMERO_CONFEZIONI_APPRONTATO],0) AS nca2, 0 AS CAT_PROGRESSIVOs, 0 AS ID_VTIGERs, Nz([ARTP_CODICE],"") AS aarrttpp, Nz([evadoc_saldo_materie_prime],"") AS eevvdd, Nz([evadoc_scarti],"") AS evscar, Nz([lavvet],"") AS lllavvvett, Nz([lavvet_perimetro],"") AS llavvv, Nz([punto_vendita],"") AS ppvend, Nz([soggetto_addebito_enasarco],"si") AS enas, Nz([tea_codice],"") AS tteaacod, pvr.tum_quantita_base, pvr.tum_quantita_evasa_base, pvr.tum_quantita_approntata_base, 0 AS evadoc_tum_quantita_bases, Nz([tipo_imballaggio],"") AS tttimb, pvr.percentuale_sconto_globale_riga, pvr.percentuale_sconto_globale_riga2, pvr.percentuale_sconto_globale_riga3, pvr.ART_CODICE_PADRE, pvr.pesoriga, pvr.QUANTITA_PADRE, pvr.univocopvr, pvr.larghezza, pvr.altezza, pvr.pesounitario, pvr.profondita, 0 AS CU
FROM pvr
WHERE (((pvr.PROGRESSIVO)=[Maschere]![avvio]![PROGRESSIVO]));
 
La tabella su musql non l'ho creata io e non posso modificarla
 
 
Andrea

Quella query viene eseguita qualche centinaia di volte per ogni RECORD con tutti quei controlli... mi pare abbastanza ovvio...!
Se tu facessi un CICLO su un RS condizionando la scrittura del dato impiegrerebbe di meno...!
 
Fai una prova semplice, elimina tutti queli NZ, ed inserisci gli stessi 1000 record coerenti che non richiedano il controllo di NZ... rieseguila e vedi la differenza di tempi...!
 
I campi in cui scrivi "no" in modo forzato, non possono avere un DEFAULT VALUE lato Server...?
 
Boh....
 
@Alex


I campi in cui scrivo no, sono campi che io, per l'uso che ne faccio,  uso il no
al database ci si collegano altri utenti con una applicazione diversa e quindi per loro il campo predefinito potrebbe essere si
 
Provo quindi ad eliminare gli nz e poi vediamo cosa succede
 
grazie
Andrea


Buongiorno
 
Ho fatto la modifica sulla query di accodamento, ma i risultati sono stati di un miglioramento di qualche centesimo di secondo.
 
Lascerò tutto così
 
grazie