Programma di esempio DYNASET.PRT
; DYNASET
;
; Programma per Proteus
;
; (C) 2003 Simone Zanella Productions
;
; Questo programma mostra un esempio di recordset di tipo Dynaset, ottenuto attraverso una query
; su Sql Server. Il codice estrae tutti i clienti (CFANAGRA) i cui documenti di vendita (DOC) hanno
; nelle righe (DOCRIGHE) un particolare articolo; i nomi dei clienti corrispondenti sono
; salvati in un file di testo, dove ogni campo č separato dall'altro dal carattere "|" (pipe).

#!proteus -z -j

!include "daodefs.prt"

; Alloca il database e apre il DSN "AZIENDA"
DBHandle = DAODBNEW()
Res = DAODBOPEN(DBHandle, "AZIENDA", 0, 0, "DSN=AZIENDA;")

IF EQ(Res, -1)
  ; Errore
  StampaErrori(DBHANDLE)
  ABORT 1
FI

; Alloca due recordset
RSHandle = DAORSNEW(DBHandle)
RSH2 = DAORSNEW(DBHandle)

; Cerca le vendite degli articoli: 5-129002-00, 5-111105-90, 5-112105-90
Query = "SELECT * FROM CFANAGRA INNER JOIN (DOC INNER JOIN DOCRIGHE ON " \
      "DOCRIGHE.IDDOC = DOC.IDDOC) ON DOC.CLIFOR = CFANAGRA.CLIFOR WHERE DOC.TIPODOC = 'FATTURA' AND CFANAGRA.TIPOCLIFOR = 'CLIENTE' " \
      "AND (ARTICOLO = '5-129002-00' OR  ARTICOLO = '5-111105-90' OR  ARTICOLO = '5-112105-90') " \
      "ORDER BY CFANAGRA.CLIFOR DESC, DOC.DTADOC DESC"

; Apre il file con i risultati, azzerando e sovrascrivendo eventuali file omonimi esistenti
H = FOPEN("CLIENTI.TXT", 28)

; Apre la query sul primo recordset (tipo Dynaset)
Res = DAORSOPEN(RSHandle, DAOCOpenDynaset, Query, 0)

IF EQ(Res, -1)
  ; Errore
  StampaErrori(DBHANDLE)
  ABORT 1
FI

N = 0
; Se abbiamo almeno un record..
IF NOT(AND(DAORSATTRIB(RSHandle, DAORSATTISBOF), DAORSATTRIB(RSHandle, DAORSATTISEOF)))
  ; Scorre tutto il recordset
  DAORSMOVEFIRST(RSHandle)
  
  WHILE NOT(DAORSEOF(RSHandle))
    ; Cerca nell'anagrafica articoli il corrispondente articolo trovato
    Res = DAORSOPEN(RSH2, DAOCOpenDynaset, \
          "SELECT * FROM ARTICOLI WHERE ARTICOLO = '" DAORSGETFIELDVAL(RSHandle, "ARTICOLO") "'", 0)
  
    ; Trascrive: ragione sociale, indirizzo, cap, cittā, provincia, stato, 
    ; data vendita, articolo e descrizione articolo

    FWRITELN(H, \
        STRTRAN(STRTRAN(DAORSGETFIELDVAL(RSHandle, "RAGSOC") " |" \
        DAORSGETFIELDVAL(RSHandle, "INDIRIZZO") " |" \
        DAORSGETFIELDVAL(RSHandle, "CAP") " |" \
        DAORSGETFIELDVAL(RSHandle, "CITTA") " |" \
        DAORSGETFIELDVAL(RSHandle, "PROVINCIA") " |" \
        DAORSGETFIELDVAL(RSHandle, "STATO") " |" \
        TOKEN(DAORSGETFIELDVAL(RSHandle, "DOCRIGHE.DtaDoc"), 1, " ") " |" \
        DAORSGETFIELDVAL(RSHandle, "ARTICOLO") " |" \
        DAORSGETFIELDVAL(RSH2, "DESCRI"), CHR(13), " "), CHR(10), " ") )
       
    DAORSCLOSE(RSH2)
    
    DAORSMOVENEXT(RSHandle)
    INC(@N)
  LOOP
FI
; Stampa il numero di record trovati
CONSOLELN "Trovate: " N " registrazioni"

; Chiude il recordset principale ed il file dei risultati
DAORSCLOSE(RSHandle)
FCLOSE(H)

; Libera i recordset; libera e chiude il database
DAORSFREE(RSHandle)
DAORSFREE(RSH2)
DAODBCLOSE(DBHandle)
DAODBFREE(DBHandle)

ABORT 0


FUNCTION StampaErrori(dbhandle)

; Stampa tutti gli errori DAO avvenuti in seguito all'ultima operazione
numerr = DAOERRCOUNT(dbhandle)
FOR x = 1 TO numerr
  CONSOLELN "Errore " x ":" 
  CONSOLELN "  Codice     : " DAOGETERRORNUM(dbhandle, x)
  CONSOLELN "  Descrizione: " DAOGETERRORDESC(dbhandle, x)
  CONSOLELN "  Sorgente   : " DAOGETERRORSRC(dbhandle, x)
  CONSOLELN ""
NEXT
RETURN
Indice esempi Prossimo esempio Esempio precedente Indice per argomenti Indice analitico
Midnight Lake iPhone Case Black Women Shoes Black Flat Shoes Leather Flats Black Patent Ballerinas Black Ballet Shoes Casual Shoes Black Shoes Women Balle Record Player Cufflinks Best iPhone XR Clear Cases iPhone XS/XS Max Leather Cases Sale Best iPhone 8/8 Plus Silicone Cases iPhone 7/7 Plus Cases & Screen Protector New Cases For iPhone 6/6 Plus iPhone 8 Case Sale iPhone Xr Case Online iPhone 7 Case UK Online iPhone X Case UK Sale iPhone X Case Deals iPhone Xs Case New Case For iPhone Xr UK Online Case For iPhone 8 UK Outlet Fashion Silver Cufflinks For Men Best Mens Cufflinks Outlet Online The Gold Cufflinks Shop Online Cheap Shirt Cufflinks On Sale Nice Wedding Cufflinks UK Online Top Black Cufflinks UK Online Mens Cufflinks Online Silver Cufflinks For Men Men Cufflinks UK Sale Gold Cufflinks UK Online Gold Cufflinks UK Silver Cufflinks UK Shirt Cufflinks Discount Online Mens Cufflinks Deals & Sales Girls Shoes For Dance Fashion Ballet Dance Shoes Best Ballet Flats Shoes UK Online Cheap Ballet Pointe Shoes UK Online Best Ballet Shoes Outlet Best Dance Shoes Sale Cheap Ballet Flats Sale UK Best Pointe Shoes Online UK Ballet Dance Shoes UK Shoes For Dance UK Best Ballet Slippers Shop Best Yoga Shoes Hotsell