* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 19, 2024, 01:07:22 am

Inserisci il nome utente, la password e la durata della sessione.

302 Visitatori, 0 Utenti

Autore Topic: leggere tabelle di DB SQLite3 con Zeos  (Letto 6521 volte)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #30 il: Aprile 15, 2021, 12:06:36 pm »
Temo che dovrò abbandonare IZConnetion per ritornare a TZConnection, oppure, drasticamente, dovrò abbandonare addirittura ZEOS.

A mio parere, ritorna dal componente TZConnection. Poi pian piano, quando avrai voglia, nuovo entusiamo e tempo puoi ripartire a vedere come il componente funziona e come si interfaccia con l'IZConnection.
Io purtroppo non posso aiutarti perchè Lazarus l'ho preso in mano da poco.

Ciao, mai disperarsi, la soluzione si trova sempre.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #31 il: Aprile 15, 2021, 03:43:26 pm »
A mio parere, ritorna dal componente TZConnection. Poi pian piano, quando avrai voglia, nuovo entusiamo e tempo puoi ripartire a vedere come il componente funziona e come si interfaccia con l'IZConnection.
Io purtroppo non posso aiutarti perchè Lazarus l'ho preso in mano da poco.

Se esistesse una guida unica e dettagliata di Lazarus e free pascal, sarebbe tutto molto più semplice e probabilmente potrei fare a meno di Zesolib. Infatti Lazarus ha i suoi strumenti per gestire database, ma, come molto materiale appartenente al mondo Linux, quello che si trova in giro è costituito molto spesso da guide scritte da volontari appassionati, ai quali va il ringrazìamento  più sincero e pieno di graditudine. Poi ci sono gli esempi e le esperienze di vita vissuta, all'interno dei forum. Ma questi ultimi, per lo più in lingua inglese, non sono quasi mai calzanti con lo spicchio di coidice che bisognerebbe mettere giù per i propri scopi.

Attenzione! La mia non è una critica, nè una lamentela, ma solamente un breve resoconto delle difficoltà logistiche che ho incontrato nel mio cammino, fino ad oggi.

Il mondo pascal in Lazarus mi piace tantissimo, ma per imparare quel poco che ho imparato è trascorso già un anno, mentre la mia vita scorre più velocemente. In ogni caso devo tantissimo agli amici di questo Forum, che ho trovato sempre disponibili a sostenermi, rispondendo alle mie sempre presenti difficoltà, tanto è che sono arrivato ai primi posti della hit parade dei messaggi scritti .  :-[

Per lavorare sui DB non so più cosa fare: Zeos mi ha un pò deluso, Ho provato gli strumenti propri di Lazarus, ma anch'essi sono risultati ostici e li ho abbandonati.
Si lo so, posso tornare a ZConnection, ma se voglio aggiornare, per es. 5 tabelle di DB, dando un solo Commit alla fine di tutti e 5 gli agli aggiornamentio, devo disegnare 5 ZQuery: dalla 1, alla 5 e quando tutto è pronto, finalmente, posso e devo comandare 5 Commit.
 :-\
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #32 il: Aprile 15, 2021, 04:48:15 pm »
Comprendo cosa vuoi dire, ma sinceramente non ritengo che usare 5 Query e fare 5 Commit sia un problema.
Magari non è quello a cui volevi arrivare, ma il tuo scopo lo hai raggiunto.

Se il creatore di Linux avesse atteso di avere il BlueTooth per pubblicare Linux, ancora ad oggi Linux non esisterebbe.

E se il problema è che una delle commit possa fallire andando a rendere incoerente il database, nelle risposte passate vedrai che ci hanno dato anche una soluzione con gli strumenti propri di SQLite (SAVEPOINT, ROLLBACK e RELEASE).

In quanto alla fatica di programmare, quello lo troverai sempre, e te lo dice uno che sicuramente non è da F1, ma che ha visto tanti linguaggi e sistemi operativi (molti dove il copia ed incolla era un miraggio), in cui molto spesso si programmava con il comando "ed" di Unix.

Quando si è alla prime armi (non come programmatore) con l'uso di un componente conviene usare ciò che viene messo a disposizione, poi si affina la tecnica.

Vai comunque tranuqillo che usare 5 query non è un problema.

Saluti

:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #33 il: Aprile 15, 2021, 04:57:53 pm »
...  usare 5 query non è un problema.

Anche se non mi piace e se mi sembra funzionalmente illogico, concordo perfettamente.
ciao ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #34 il: Aprile 15, 2021, 10:19:48 pm »
Il debugger lo usi?


Perchè ho l'impressione che tu stia mandando 2 volte il protocollo da usare (quindi il driver).
Magari mi sbaglio.


Immagino che tu abbia delle stringhe del tipo
Codice: [Seleziona]
  dbDati:= dbDati + dbCopia;
  DriverManager.GetConnection(DriverManager.ConstructURL(CurrentProtocol, '', dbDati, '', '', 0, nil));
  // dbDati('zdbc:sqlite:')+dbCopia('/media/dirdati/dativari/contabfam/ContabFamdb_prove')


Quindi l'url risultante è quasi certamente sbagliato.


Qualcosa del tipo 'zdbc:sqlite:zdbc:sqlite:/il tuo file'
Carica l'url in una variabile e controlla col debugger il suo contenuto. O stampa a console il valore, come ti trovi meglio.
Stilgar




Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #35 il: Aprile 15, 2021, 10:59:13 pm »
Ti lascio un esempio di un metodo che ho scritto, qui creo tabelle al volo dentro sqlite.


Codice: [Seleziona]

procedure TDatabaseModule.createStructures(fileName: TFileName);
begin
  try
    FUpdateConnection := DriverManager.GetConnection(DriverManager.ConstructURL(CurrentProtocol, '', fileName, '', '', 0, nil));
    try
      if not tablePresent(FUpdateConnection, 'Subject') then
      begin
        FUpdateConnection.CreateStatement.Execute('CREATE TABLE Subject (id VARCHAR(37) primary key, title varchar(50))');
      end;
      if not tablePresent(FUpdateConnection, 'Note') then
      begin
        FUpdateConnection.CreateStatement.Execute('CREATE TABLE Note (id VARCHAR(37) primary key, subjectId VARCHAR(37), title varchar(100), [text] text, password varchar(200), FOREIGN KEY(subjectId) REFERENCES Subject(id))');
      end;
      if not tablePresent(FUpdateConnection, 'Attach') then
      begin
        FUpdateConnection.CreateStatement.Execute('CREATE TABLE Attach (id VARCHAR(37) primary key, noteId VARCHAR(37), comment varchar(2000))');
      end;
      if not tablePresent(FUpdateConnection, 'ToDo') then
      begin
        FUpdateConnection.CreateStatement.Execute('CREATE TABLE ToDo (id VARCHAR(37) primary key, noteId VARCHAR(37), comment varchar(2000), done int default 0)');
      end;
      if not tablePresent(FUpdateConnection, 'Info') then
      begin
        FUpdateConnection.CreateStatement.Execute('CREATE TABLE Info (key varchar(30) primary key, value varchar(100));');
        FUpdateConnection.CreateStatement.Execute('INSERT INTO Info (key,value)values(''format-version'',''2.0'')');
      end;
      FUpdateConnection.CreateStatement.Execute('VACUUM');
    finally
      FUpdateConnection.Close;
    end;
  except
    on e: Exception do
    begin
      writeln(e.Message);
    end;
  end;
  FUpdateConnection := nil;
end;

Codice: [Seleziona]

function TDatabaseModule.tablePresent(datasource: IZConnection; tableName: string): boolean;
var
  rs: IZResultSet;
begin
  Result := False;
  rs := datasource.GetMetadata.GetTables('', '', '%' + tableName + '%', ['TABLE']);
  while rs.Next do
  begin
    tableName := rs.GetStringByName('TABLE_NAME');
    if tableName = tableName then
    begin
      Result := True;
      break;
    end;
  end;
end;
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #36 il: Aprile 16, 2021, 10:20:20 am »
Il debugger lo usi?
[...]
Perchè ho l'impressione che tu stia mandando 2 volte il protocollo da usare (quindi il driver).
[...]
Carica l'url in una variabile e controlla col debugger il suo contenuto. O stampa a console il valore, come ti trovi meglio.
Il debugger lo uso, ma per constatare insieme il contenuto dell'URL faccio così
Codice: [Seleziona]
  dbDati:= dbDati + dbCopia;
  striMia:= DriverManager.ConstructURL(CurrentProtocol, '', dbDati, '', '', 0, nil);
  Writeln('DriverManager.URL= "' + striMia + '"');
  DriverManager.GetConnection(DriverManager.ConstructURL(CurrentProtocol, '', dbDati, '', '', 0, nil));
Ecco il risultato
Citazione
DriverManager.URL= "zdbc:sqlite:///zdbc:sqlite:/media/dirdati/dativari/contabfam/ContabFamdb_prove"

Sostituendo dbDati con dbCopia, ottengo:
Citazione
DriverManager.URL= "zdbc:sqlite:////media/dirdati/dativari/contabfam/ContabFamdb_prove"
Non capisco la presenza delle "///" precedenti il percorso contenuto nella variabile dbCopia (dalla finestra del debugger: "dbCopia = '/media/dirdati/dativari/contabfam/ContabFamdb_prove'
const
 dbCopia:
String
/media/dirdati/dativari/lazarus_progetti/lazarus_progetti_miei/daContDom_aDomusRatio/frmmain.pas(96,3))




« Ultima modifica: Aprile 16, 2021, 10:35:43 am da petrusic »
ciao ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #37 il: Aprile 16, 2021, 01:44:16 pm »
Ciao.
Il fatto che ci siano 3 / dipende dal fatto che si sta lavorando con un url.


Se leggi una pagina html da disco il browser visualizzerà nella barra degli indirizzi una cosa simile a "file:///"


URL,URI e URN hanno una loro sintassi.




Cmq, ora ti si apre quel benedetto file?




Stilgar.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #38 il: Aprile 16, 2021, 05:08:09 pm »
Cmq, ora ti si apre quel benedetto file?
Si, finalmente si apre.

Le istruzioni finali usate fino ad ora ("fino ad ora", perchè non ho ancora approfondito sugli esempi che mi hai riportato prima.)
sono:
Codice: [Seleziona]
const
  CurrentProtocol = 'sqlite';

  dbCopia: String = '/media/dirdati/dativari/contabfam/ContabFamdb_prove';
  dbOrig: String = '/media/dirdati/dativari/contabfam/ContabFamdb';
var
  FConn: IZConnection;
  stmt  :IZStatement;
  rs  :IZResultSet;                           
[...]
begin
  striMia:= DriverManager.ConstructURL(CurrentProtocol, '', dbCopia, '', '', 0, nil);
  Writeln('DriverManager.URL= "' + striMia + '"');
  FConn:= DriverManager.GetConnection(striMia);                   
[...]
       stmt := FConn.CreateStatement;
        sql:= 'SELECT DtCoMovg,StaDtMovg FROM riepmovg WHERE DtCoMovg >= ' + dtIni + ' AND DtCoMovg <= ' + dtFin;
        rs   := stmt.ExecuteQuery(sql);
        totRecQry:= rs.GetRow;     // totRecQry contiene sempre 0, anche quando il range di ricerca non è nullo
[...]
Devo approfondire l'indagune di ricerca errori nelle ultime due righe del mio codice.
 :D
ciao ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #39 il: Aprile 16, 2021, 05:39:20 pm »
GetRow dovrebbe (ma non ricordo bene) a che posizione sei nel cursore.


Quindi senza while rs.next do dovrebbe restare sempre a zero.


Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #40 il: Aprile 16, 2021, 06:57:33 pm »
GetRow dovrebbe (ma non ricordo bene) a che posizione sei nel cursore.
Non capisco bene cosa vuoi dire. Vuoi sapere dove si trova la "G" di GetRow ?  La risposta è: posiz.26  ::)

Quindi senza while rs.next do dovrebbe restare sempre a zero.
Hai ragione a fare quella riflessione, il codice è sparuto, ma ho riportato solo l'essenziale. Prima di questo momento riportarlo tutto non aveva senso.
Le istruzioni di lettura della tabella di DB (riepmovg) sono all'interno di un ciclo iterativo comandato dalla fine dei file .odt contenenti i fogli di calcolo da trattare:
Codice: [Seleziona]
procedure TForm1.FormCreate(Sender: TObject);
const
  dirFogli: string = '/media/dirdati/dativari/ContDom/';
  CurrentProtocol = 'sqlite';

  dbCopia: String = '/media/dirdati/dativari/contabfam/ContabFamdb_prove';
  dbOrig: String = '/media/dirdati/dativari/contabfam/ContabFamdb';
var
  Esito: TSearchRec;

  FConn: IZConnection;
  stmt  :IZStatement;
  rs  :IZResultSet;
  swAster: Boolean = False;

  lun, totRecQry: Integer;

  annata, dtIni, dtFin, sql, striMia: String;
begin
//---------------------------------------------------- Salvataggio prudenziale del DB "ContabFamdb" -------------------------------------------------
  CopyFile(dbOrig, dbCopia);
  ShowMessage('"ContabFamdb" copiato in "ContabFamdb_prove"');
//---------------------------------------------------- FINE salvataggoio ---------------------------------------------------------------------------------
  striMia:= DriverManager.ConstructURL(CurrentProtocol, '', dbCopia, '', '', 0, nil);
  Writeln('DriverManager.URL= "' + striMia + '"');
  FConn:= DriverManager.GetConnection(striMia);
  stmt:= FConn.CreateStatement;
  If FindFirst(dirFogli + 'ContDom*.*', faAnyFile,  Esito)=0 then
  begin
    Label1.Caption:= 'Directory corrente:' + chr(10) + dirFogli;
    repeat
      begin
        lun:= Length(Esito.Name);
        annata:= Copy(Esito.Name,(lun-7),4);
        WriteLn('nomeFoglio= "' + Esito.Name + '" / annata: -' + annata + '-');
//        dtIni:= annata + '0101';
//        dtFin:= annata + '1231';
dtIni:= '20020101';   // istruzione di prova di inizio periodo con 352 record
dtFin:= '20021231';   // istruzione di prova di fine periodo con 352 record
        sql:= 'SELECT DtCoMovg,StaDtMovg FROM riepmovg WHERE DtCoMovg >= ' + dtIni + ' AND DtCoMovg <= ' + dtFin;
        try
          rs:= stmt.ExecuteQuery(sql);
          totRecQry:= rs.GetRow;
        except
          on e: Exception do
          begin
            writeln(e.Message);
          end;
        end;
          FConn.Close;
          FConn:= nil;
          case totRecQry of
          0:
           begin
            striMia:= '-' + Esito.Name;
            lsDir.Items.Add(striMia);
           end
           else
             begin;
              WriteLn('*** TROVATI in riepmovg, per l''annata -'+ annata + '- n.' + IntToStr(totRecQry) + '***');
              striMia:= '*' + Esito.Name;
              swAster:= True;
              lsDir.Items.Add(striMia);
             end;
        end;
      end;
    Until FindnNext(Esito) <> 0;
    FindClose(Esito);
//   Writeln('Lettura directory -> TERMINATA' );
    PulsAvvia.Caption:='AVVIO' + chr(10) + 'LAVORO';
    case
      swAster of
        True:
        begin
          leInfoMov.Visible:= True;
        end;
    end;
  end;
end;
Ora ho riportato tutta la procedura. Ho inserito una data di inizio e fine periodo dove esistono 352 record (verificato col DBBrowser di SQLite), proprio per verificare il funzionamento della query scritta. Infatti la tengo sotto controllo in debugger e la faccio eseguire una volta sola.
Purtroppo non ho capito cosa manca per farla funzionare.
ciao ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #41 il: Aprile 16, 2021, 09:33:20 pm »
Scusa.
Ho scritto senza rileggere.
Getrow dovrebbe restituire la posizione del cursore.

Non spostando il cursore sei alla riga zero.
Come scrivevo nella miniguida, serve un rs.next
Se restituisce false vuol dire che non c'è più nulla nel cursore.

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #42 il: Aprile 16, 2021, 10:46:16 pm »
Getrow dovrebbe restituire la posizione del cursore.

Non spostando il cursore sei alla riga zero.
Come scrivevo nella miniguida, serve un rs.next
Se restituisce false vuol dire che non c'è più nulla nel cursore.
Ah! Avevo capito male. Secondo me "rs.GetRow" era l'istruzione corrispondente alla "Form1.ZQuery1.RecordCount" di TZConnection.
Anche, leggendo la miniguida, non avevo capito che bisognava attivare un contatore di righe artigianale.

Comunque, anche questa è andata ed ho potuto fare, grazie alla tua superilluminazione, un altro piccolo passo avanti.
ciao ciao

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #43 il: Aprile 20, 2021, 12:16:39 pm »
Mi riferisco al seguente passo della miniguida Zeos dietro le quinte:
Citazione
Come si accede alle colonne?
cursor.get[xxxxx](indice).

Poichè devo risalire all'ultimo progressivo ID di ciascuna tabella del DB, (l'ID occupa sempre la colonna 1), ho provato a scrivere una function unica in grado di leggere il contenuto della prima colonna dell'ultima riga di una tabella qualsiasi:
Codice: [Seleziona]
function LeggiUltimoID(nmTabDB: String):Integer;
const
CurrentProtocol = 'sqlite';

var
  FConn: IZConnection;
  stmt: IZStatement;
  rs: IZResultSet;

  numID, sql, striMia: String;

begin
  striMia:= DriverManager.ConstructURL(CurrentProtocol, '', dbCorr, '', '', 0, nil);
  FConn:= DriverManager.GetConnection(striMia);
  stmt:= FConn.CreateStatement;
   sql:= 'SELECT fields[1] as col1 FROM ' + nmTabDB + 'ORDER BY col1 DESC LIMIT 1';
  rs:= stmt.ExecuteQuery(sql);
  numID:= LoadCursorFromLazarusResource(col1);    // dovrebbe leggere il contenuto della colonna 1 della tabella corrente del DB

end;
Ebbene, numID assume 0(zero).
Citazione
numID = 0
var
 numID: Integer = longint
/media/dirdati/dativari/lazarus_progetti/lazarus_progetti_miei/daContDom_aDomusRatio/frmmain.pas(1216,3)
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:leggere tabelle di DB SQLite3 con Zeos
« Risposta #44 il: Aprile 20, 2021, 02:47:12 pm »
Codice: [Seleziona]
 numID:= LoadCursorFromLazarusResource(col1);    // dovrebbe leggere il contenuto della colonna 1 della tabella corrente del DB

Non penso che quello ti ritorni il valore contenuto nel campo 'col1', ha a che fare con tuttaltro.

Tramite Interfaccia non conosco la funzione da chiamare, ma penso che sia tramite

Codice: [Seleziona]
rs.getRow
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18771
  • Topic in totale: 2233
  • Online Today: 321
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 302
Total: 302

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.