Ms-Access MDB: dividere il campo Memo in diversi campi di testo. (Per prevenire la corruzione dei dati)

StackOverflow https://stackoverflow.com/questions/826668

Domanda

Uso un database di Access utilizzato solo come back-end.
Uso alcuni campi memo.

Ho appreso che i campi memo sono soggetti a corruzione del database perché sono memorizzati in una pagina di dati separata; il record contiene solo un puntatore alla pagina di dati in cui sono memorizzati i dati effettivi.

Il più delle volte ho solo bisogno di circa 100-1000 caratteri, quindi ho avuto un'idea ...
Il mio "brillante" (o no) l'idea era di dividere il memo in 4 o 5 campi di testo (possono contenere 255 caratteri ciascuno).

Qualcuno l'ha già fatto prima?
Problemi noti?
Questo approccio sarebbe meno soggetto alla corruzione dei dati?

Grazie,
Jag

P.S.
1. Ho avuto problemi di corruzione prima.
2. So che la cosa migliore sarebbe migrare verso un altro back-end, ma non è possibile.

È stato utile?

Soluzione

La soluzione migliore è quella di separare la pagina dei dati dell'appunto dal record allegato. Il modo per farlo è quello di mettere i campi memo in una tabella separata. Puoi farlo con una tabella 1: 1 (con più memo nella tabella laterale) o, meglio, come una tabella 1: N con un campo tipo memo. L'ultimo modo è l'unico modo per evitare completamente il problema del puntatore del memo, anche se, come nella precedente soluzione, la corruzione di qualsiasi puntatore del memo nella tabella dei memo ti fa perdere tutti.

Inoltre, dovresti considerare perché il tuo database sta corrompendo i puntatori dei memo. A parte il suggerimento sopra, probabilmente dovresti considerare di modificare i tuoi memo senza restrizioni, anche se non sembra che tu stia usando un front-end di Access sul tuo MDB Jet che probabilmente non è un problema. Vedo di tanto in tanto la corruzione dei promemoria, ma non molto spesso. Se la vedi spesso, mi suggerisce che la tua applicazione sia mal progettata o che il tuo ambiente operativo sia notevolmente scadente.

Altri suggerimenti

Sembra che tu voglia prendere un campo memo esistente e tagliare prima di inserirlo nel database e poi incollarlo di nuovo quando è necessario visualizzarlo.

Penso che avrai un mondo di dolore se lo provi. Farei del mio meglio per cambiare il backend se questa fosse la tua unica opzione :)

Mi baserò sulla risposta di DWF suggerendo di fare qualcosa come quello che stavi suggerendo. Crea una tabella 1: N (la chiamerò UserNotes) con un campo di testo (rispetto ai memo con cui sembra che tu abbia problemi).

Quindi creare una sottomaschera con UserNotes come sorgente del record e sostituire il campo memo con la sottomaschera UserNotes. Ciò consente all'utente di decidere dove si trovano le interruzioni di riga / paragrafo nel contesto del campo di testo di 255 caratteri. (per la conversione dovrai comunque tagliare i promemoria, ma è solo una volta un'operazione)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top