Newsgroup: it.comp.lang.visual-basic
Titolo: [OT]  Navision

Buongiorno.
Scusate l'argomento decisamente OT, ma non saprei dove ottenere
informazioni.
C'è qualcuno che mi può dire che ambiente di sviluppo e quale database
utilizza Navision, oppure mi sappia indirizzare su qualche sito o NG.
Premetto che ho già cercato in Microsoft, ma non ho trovato nulla che
soddisfasse la mia curiosità, a parte la descrizione delle funzionalità del
prodotto.
Può essere che abbia visto male, ma...
Grazie
Ciao
Eugenio


ha scritto:

 Utilizza 3 database
uno proprietario gratuito
sql server
oracle
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Grazie.
Per favore, mi puoi dare ulteriori informazioni sull'ambiente di sviluppo?
E se puoi anche un tuo giudizio?
Grazie
Ciao
Eugenio



Ora, per Navision si intendono 2 prodotti completamente diversi:
- Navision Attain 
- Navision Axapta
Il primo può girare su db nativo (navision db) e su sql server
(inoltre non mi risulta che giri su oracle), del secondo non so nulla.
Navision Attain
Il linguaggio di programmazione è c/al
Gli oggetti gestiti sono:
Tables - le tabelle
Forms - le maschere
Reports - i report ed i programmi "batch" sulle tables
Codeunits - in genere repository di funzioni che possono essere
chiamate indipendentemente dalle altre 
Dataports - programmi per interfaccia di navision per l'importazione /
esportazione
La programmazione è "a eventi" le variabili devono essere tutte
dichiarate in una finestra (che odio).
L'ide è ancora molto rudimentale, l'intellisense te lo scordi (al suo
posto c'è una schifezza che loro chiamano c/al symbol menu che ti fa
comparire una finestra).
Gli oggetti sono presentati in forma descrittiva in ordine di numero,
i nomi delle tabelle sono ad esempio "General journal line" (prima
nota contabile), "Customer ledger entry" (movimenti contabili clienti)
la programmazione risulta molto scomoda perchè "chi ha pensato"
navision lo ha visto come un modulo che doveva fare a meno dei
programmatori per cui cose anche banalissime su qualsiasi ide su
Navision mancano.
Ad esempio il data-type di un campo è un segreto di stato, per saperlo
devi aprire la tabella, i nomi dei campi sulle tabelle sono presentati
nell'unico ordine che è il numero di id del campo (molto scomodo) i
nomi dei campi sono delle acrobazie lessicali (per fargli un
complimento), il codice del cliente si chiama "No." il codice del
fornitore si chiama "No." (le virgolette ed il punto fanno parte del
nome del campo e le devi scrivere così), se mi capita fra le mani il
folle che ha deciso questa cosa lo strangolo immediatamente.
Il motivo per cui Microsoft ha acquisito Navision sta tutto in due
cose:
- "SIFT" (SUM INDEX FIELD) che è una tecnologia che consente di avere
i totali aggiornati in "real time" anche in presenza di migliaia di
righe
- FILTRI - la gestione dei filtri è veramente superba (specie se
accoppiata con i sumindex)
I programmi (forse è meglio dire trigger e funzioni) sono salvati
all'interno del database all'interno degli oggetti, la compilazione
consiste in una "validazione" dell'oggetto rispetto a tutti gli altri
che coinvolge.
La distribuzione dei programmi (e delle loro dipendenze) è fatta
pertanto mediante uno scarico/ricarico degli oggetti.
Per finire ti mostro un esempio di programma scritto in c/al che fa la
solita conversione da cifre a lettere  (apro una parente: se a
qualcuno interessa ho lo stesso per vb c# e 
vb.net
)
segno := TRUE;
IF (Importo < 0) THEN BEGIN
  segno := FALSE;
  Importo := Importo * -1;
END;
valore := FORMAT(Importo,0,'<Sign><Integer><Decimals,3>');
resto := '/00';
valore := Replace(valore,',','.');
k := STRPOS(valore,'.');
IF (k >= 0) THEN BEGIN
  resto := '/' + COPYSTR(valore,(k + 1));
  valore := COPYSTR(valore,1,k - 1);
END;
IF (valore = '0') THEN BEGIN
  _Lettere := 'zero' + resto;
  IF segno = FALSE THEN _Lettere := 'meno' + _Lettere;
  EXIT(_Lettere);
END;
k := STRLEN(valore) MOD 3;
IF (k > 0) THEN
  valore := PADSTR('',3 - k,'0') + valore;
kmila := 0;
WHILE (valore <> '') DO BEGIN
  parziale := '';
  kmila := kmila + 1;
  tripla := COPYSTR(valore,STRLEN(valore) - 2);
  valore := COPYSTR(valore,1,STRLEN(valore) - 3);
  IF EVALUATE(x,COPYSTR(tripla,1,1)) THEN;
  IF (x <> 0) THEN BEGIN
    parziale := 'cento';
    IF x > 1 THEN
      parziale := SELECTSTR(x,decine) + parziale;
  END;
  IF EVALUATE(x,COPYSTR(tripla,2,2)) THEN;
  IF (x <> 0) THEN BEGIN
    IF (x < 20) THEN BEGIN
      parziale := parziale + SELECTSTR(x,decine);
    END
    ELSE BEGIN
      IF EVALUATE(x,COPYSTR(tripla,2,1)) THEN;
      IF (x > 0) THEN
         parziale := parziale + SELECTSTR(x + 18,decine);
      IF EVALUATE(x,COPYSTR(tripla,3,1)) THEN;
      IF (x > 0) THEN BEGIN
        IF (STRPOS('aioue',COPYSTR(parziale,STRLEN(parziale))) > 0)
AND
                  ((x = 1) OR (x = 8)) THEN
          parziale := COPYSTR(parziale,1,STRLEN(parziale) - 1);
        parziale := parziale + SELECTSTR(x,decine);
      END;
    END;
  END;
  IF (parziale <> '') THEN BEGIN
    x := kmila + 7;
    IF (parziale = 'uno') THEN BEGIN
      parziale := '';
      x := kmila;
    END;
    tmp := SELECTSTR(x,migliaia);
    IF (kmila < 2) AND (tmp = 'xxx') THEN
      tmp := '';
    IF (kmila = 1) THEN BEGIN
       _Lettere := tmp + parziale;
    END
    ELSE BEGIN
      IF (parziale <> '') THEN BEGIN
        IF (COPYSTR(tmp,1,2) = 'mi') AND
           (COPYSTR(parziale,STRLEN(parziale) - 2,3) = 'uno') THEN
             parziale := COPYSTR(parziale,1,STRLEN(parziale) - 1);
      END;
      _Lettere := parziale + tmp + _Lettere;
    END;
  END;
END;
_Lettere := _Lettere + resto;
IF (segno = FALSE) THEN
  _Lettere := 'meno' + _Lettere;
EXIT(_Lettere);
=======================================================================
Se mi vuoi scrivere togli le maiuscole
Sveltolampo 
cteniza...@hotmail.com
=======================================================================

 La distribuzione dei programmi (e delle loro dipendenze) č fatta

Grazie
Ciao
Eugenio

 Eugenio
Nativamente utilizza un DB proprietario (non è gratuito...) ed ha una
velocità spaventosa (può utilzzare anche MS SQL ma le maggiori performance
le ho viste sul db proprietario).
Ha un'architettura di tipo client server e può essere installato in
cluster.
E' suddiviso in aree (moduli - granuli acuistabili separatamente): CG ,
Vendite, Acquisti, Magazzino, CRM, Gestione Assistenza, Manufacturing,
ecc... (in pratica ci si gestisce un azienda di medie dimensioni). 
Personalmente lo trovo un ottimo ERP e geniale in alcune soluzioni.
Il Linguaggio utilizzato è il CAL praticamente un PASCAL. Supporta
l'automazione e gli OCX non grafici.
Ha un potente Report generator integrato.
E' un prodotto recentemente(1,5 mezzo fa) acquisito da MS
Ciao Marco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Sveltolampo ha scritto:




....
Replace...? Probabilmente te la sei implementata in una tua Cu...>49999
;-)


Ciao Marco
Si, visto che ogni tanto ricompariva mi sono fatto una funzione che fa
la replace che si trova all'interno della codeunit che contiene
cifre->lettere
