Newsgroup: it.comp.appl.access
Titolo: conversione dati con Csng ... non funge!?

Salve a tutto il ng,
come da oggetto sto acquisendo dati da un vechhissimo database che salvava i 
dati in QuickBasic7, con un Mks$ venivano accodati 15 valori numerici in una 
stringa.
Ora io spezzetto la stringa nei suoi quindici pezzetti ma .... non sono 
capace di estrarne il valore convertito.
Il codice è questo
    (basic)-------------------------
        FOR d% = 1 TO 15
            vset(s%, d%, 0) = CVS(MID$(c$, d% * lenset - (lenset - 1), 
len1))
            IF vset(s%, d%, 0) THEN HoDatiSettimane = VERO
    (access)-------------------------
        lenset = 6: len1 = 4
        FOR d = 1 TO 15
            vset(s, d, 0) = CSng(MID(c, d * lenset - (lenset - 1), len1))
su questa riga mi dà errore 13 : Tipo non corrispondente.
Ora sono sicuro di aver prelevato 4 bytes, ho dimensionato le variabili e i 
tipi sono congrui.
Non riesco a capire(!).
potrei anche tentare di accedere agli archivi prelevando direttamente i 
quattro caratteri come tipo Single a fronte di un TYPE definito da me, ma mi 
pare assurdo.
Perchè il tutto non funge?
Aiuto
Ivan 

 capace di estrarne il valore convertito.
[...]
Non sono sicuro di aver compreso bene il tuo problema.
Comunque la routine seguente estrae da una stringa di numeri
lunga   N * S   gli   N   gruppi di  S  numeri che la compongono.
=====================================
Private Sub Command3_Click()
Dim SS As String, i As Byte, S As Byte
SS = "124354656768690494837626174354576382903474927239472394739457"
S = 4
For i = 1 To Len(SS) Step S
    Debug.Print Mid(SS, i, S)
Next
End Sub
=================================
Ciao
Bruno 

 Bruno
Ciao Bruno,
purtroppo io cerco di estrarre DA una stringa di quattro byte(cifre) il 
numero che è stato codificato da Basic, nel formato nativo.
Se dai un'occhiata alla guida vedrai che il tipo Single precision è 
codificato in quattro bytes.
Ebbene io ho i quattro bytes (compresi di zeri esadecimali) ma non riesco a 
convertirli nel numero (singola precisione) originale.
Lo so, è un mondo difficile! Ma che mondo sarebbe se nessuno cercasse di 
estrarne qualcosa ??!
cmq ti ringrazio per l'interessamento.
-- 
-- 
      /)/)               IVAN                (\/)
     (  '.')         NMCBRMC         ( '.' )
  o(_('')('')                               (")(")_)*
Non Microsoft Certified But Regular
             Microsoft Consumer

 estrarne qualcosa ??!
Infatti, proprio non avevo capito.
Quindi non conosci l'algoritmo di codifica di un Single
in 4 bytes, e nemmeno hai qualche esempio di equivalenza
da cui si possa cercare di dedurlo?
Dovrei avere ancore un manuale di vecchio Basic, provo a darci
un'occhiata.
Una volta nei manuali un po' di teoria veniva messa; ora i manuali
non si stampano piů...
Rileggendo il tuo post, parli di QuickBasic 7; ma non era arrivato
al 4.5?  O son io rimasto indietro di 2.5?
Ciao
Bruno 


Ciao Bruno,
si il QuickBasic è arrivato al 4.5, ma io avevo la gloriosa versione QB7 che 
permetteva l creazione di Librerie ( quasi delle DLL) in cui depositare 
funzioni e Sub da richiamare da Moduli vari.... insomma con un compilatore 
veramente cazzuto che alla fine ti rilasciava degli EXE davvero snelli e 
veloci.
Il fatto della conversione del numero non esisteva, pichè una volta 
dichiarato un tipo di dato User Defined con
DEF TYPE MiaStruttura
    PRIMO As Integer
    SECONDO As Single
    TERZO As String * 31
END TYPE
e  istanziata nei punti in cui serviva con
DIM MiSt As MiaStruttura
non servivano conversioni bastava assegnare al membro
    MiSt.SECONDO = 324,12
e il gioco era fatto! Poi si salvava tutta la struttura con PUT #numfile  e 
si leggeva con GET #numfile.
Il fatto che in questo caso ho voluto fare lo 'sborone' ed ho accodato 15 di 
queste stringhine da 4 bytes in una sola stringa, ma il QB7 me lo permetteva 
con le due funzioni reciproche MKS$  e CVS che purtroppo il VBA non 
riconosce e non fornisce alternative.
Però ho già 'pensato' a come aggirare il problema: probabilmente mi creo una 
struttura di 15 membri e li leggo alla stessa maniera, aggirando la 
conversione successiva.
Cmq grazie, nell'opera di conversione di questa vecchia aplicazione DOS 
(tuttora funzionante!), che ha una base di 60mila buste paga, con una media 
di 3 o 4 dettagli ognuna, mi si propongono difficoltà che alla fine 
rafforzano la mia conoscenza  si Access e sopratutto del VBA.
