Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    problema record a lunghezza fissa con campi non posizionali

    Ciao Ragazzi,
    avrei bisongo di un aiuto.
    Ho caricato un record a lunghezza fissa con campi sia posizionali che non posizionali, in una tabella di access.
    Adesso avrei bisogno di creare una query che mi possa restituire il valore di un campo (da cercare poichè non è detto che esista) che si trova a sinistra del suo valore.
    Vi faccio un esempio per chiarire meglio
    CAMPO VAL CAMPO VAL
    E0001028 3673,53 E0001029 527,76

    Per intenderci io vorrei che se trova il campo E0001028 mi restituisca il valore corrispondente (quello a destra).

    Spero di essermi chiarito.
    Vi prego aiutatemi sto impazzendo.
    Grazie tante del supporto.

  2. #2
    dicci almeno com'è strutturata la tabella

  3. #3
    Allora guarda la tabella non ha una struttura definita per via dei campi non posizionali.
    Nel senso che nel txt da dove ho preso i record, ci sono i campi e il valore corrispondente a destra.
    Tuttavia tra un record e l'altro, ci potrebbe essere un campo diverso sulla stessa posizione del campo del record sopra.
    Ti esemplifico la situazione:
    E0001040 19,32 E0001042 2636,28 V1001000 1
    E0001039 7320,70 E0001040 25,62 E0001042 3248,85
    Di conseguenza non posso assegnare alla colonna il nome del campo poichè non potrebbe essere uguale tra un record e l'altro.
    La mia tabella è quindi strutturata in questo modo:
    campo1 campo2 campo3 campo4 campo 5 etc....... in orizzontale
    i record in verticale
    in pratica la tabella l'ho usata solo per incolonnare i campi e i valori presenti nel record.
    Spero di essermi spiegato.
    Se pensate ad un altro metodo per importare i record che ho nel txt qualsiasi suggerimento è ben accetto.
    Grazie tantissime

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    Quote Originariamente inviata da bicchio87 Visualizza il messaggio
    Vi faccio un esempio per chiarire meglio
    CAMPO VAL CAMPO VAL
    E0001028 3673,53 E0001029 527,76

    Per intenderci io vorrei che se trova il campo E0001028 mi restituisca il valore corrispondente (quello a destra).
    come si chiama il campo che potrebbe contenere E0001028,
    come si chiama il campo da restituire (quello a destra),
    come si chiama la tabella su cui cercare

    ??

  5. #5
    allora il nome del campo è E0001028 (è questo il problema)
    il campo da restituire è il valore del campo di sopra.
    La tabella è DMA mese.
    In questo link ci sono le specifiche tecniche dettagliate.
    http://www.auge.it/pdf%202004/Specif...iche%20dma.pdf
    Grazie tante della disponibilità, sto facendo un progetto grosso a lavoro e ho bisogno di fare delle verifiche su questi file in modo massivo.

  6. #6
    Quote Originariamente inviata da mydb Visualizza il messaggio
    come si chiama il campo che potrebbe contenere E0001028,
    ??
    Il nome del campo è proprio quello.

    Quote Originariamente inviata da mydb Visualizza il messaggio
    come si chiama il campo da restituire (quello a destra),
    ??
    Il valore è l'importo del campo sopra

    La tabella si chiama DMA-mese

    www.auge.it/pdf%202004/Specifiche%20tecniche%20dma.pdf

    Grazie tante per il tempo che mi dedicate.

  7. #7
    è un bel documento, sono 56 pagine! dovresti cercare di spiegarci tu la parte che ti interessa, grazie

  8. #8
    guarda io ho bisogno della tipologia di record C che è composta da campi posizionali (i primi) e quelli non posizionali.
    Ovviamente, la solita fortuna, io ho bisogno di trattare i campi non posizionali.
    Vi ho postato il link solo per varvi capire che tecnicamente il nome del campo è quello che inizia per lettera (es. E0001028) e il valore corrispondente è quello alla destra del campo.
    Io avevo pensato A: visto che il campo e del valore sono complessivamente di 24 byte (8 il nome del campo e 16 per il valore corrispondente), di metterli in tabella in modo da dividere valore e campo.
    B: di fare una sorta di query che mi permetta di restituirmi il valore corrispondente ad un campo che scelgo.
    Solo come faccio a digli che per il campo che scelgo, il valore è nella colonna a destra????
    Sarebbe stato molto più semplice se avessi messo come intestazione della colonna i campi e i valori poi per ogni record... ma a) sono non posizionali b) se il dato supera i 16 byte il campo si ripete subito dopo, quindi non avrei avuto un campo unico per tutti i record (magari ad un record il campo E0001028 sta nella colonna 16, il record sotto trovo invece il campo E0001027).
    E' la prima volta che mi ritrovo a trattare record così, mi dispiace farvi perdere tempo non riesco a trovare in rete qualche documentazione a supporto.
    Grazie ancora per la vostra disponibilità

  9. #9
    Stavo pensando che se impostassi un codice in VB che mi vada a leggere per ogni record i campi che mi interessano e mi compili una tabella di access con il campo come intestazione di colonna e il valore (ovvero gli 8 byte successivi al campo)? e così via per ogni record??? sarebbe fattibile???

  10. #10
    quello che non capisco (in termini di database) è cosa significhi l'espressione "alla destra del campo". se intendi la colonna successiva, e lavori in vb, puoi usare il numero di colonna

    es, in una select del tipo

    SELECT nome, cognome FROM clienti

    puoi leggere il nome sia con rs("nome") che con rs(0)

    quindi potresti cercare il tuo campo "chiave" con un ciclo for...next

    NomeColonna="E0001027"
    NumColonna=-1
    for i=0 to rs.fields.count-1
    if rs.fields.name=NomeColonna then
    NumColonna=i
    Exit For
    End If
    Next

    If numColonna<>-1 Then
    NumColonna=NumColonna+1
    End If

    a questo punto con rs(NumColonna) ricavi il valore "a destra"

    ammesso che abbia capito (e tieni presente che ho scritto il codice al volo)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.