Gambas3 > Database

gambas 3.19.1 con ODBC + MSSQL 2016: problemi query di raggruppamento

(1/3) > >>

Simo:

Buonasera a tutto il team!

Sto effettuando dei test con gambas 3.19.1 installato in Ubuntu 22.04.4 LTS che tramite connessione ODBC si connette a MICROSOFT SQL SERVER 2016.

Per l'installazione del driver ODBC ho seguito il link seguente:
https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16&tabs=ubuntu18-install%2Calpine17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline

Per la configurazione del file odbcinst.ini ho seguito il link seguente:
https://gambaswiki.org/wiki/doc/odbc

Sono riuscito da gambas3 a connettermi a MS SQL SERVER, eseguendo senza problemi query di selezione (Select * from tabella1 where colonna1 = 'pippo') e query per inserire record (INSERT INTO tabella1 ( colonna1, colonna2) VALUES ( 'Bepe', 'pippo')".

Quando tento di eseguire una query di selezione con raggruppamento:
SQL = "SELECT SUM(collicar) as Tot_Colli FROM anaetichette WHERE lotto = '722078' GROUP BY lotto"

L'oggetto result sembra essere sempre vuoto, la proprietà rs.Available è sempre = False.

Qui di seguito il codice:

         rs = $con.Exec("SELECT SUM(collicar) as Tot_Colli FROM anaetichette WHERE lotto = '722078' GROUP BY lotto")
         WHILE (rs.Available)
               PRINT "record trovato: Tot colli:" & rs!Tot_Colli
               rs.MoveNext()
         WEND

Credo di sbagliare qualcosa, vi sarei grato se poteste darmi qualche dritta o consiglio in merito al problema.
Più in generale volevo sapere se qualcuno aveva già usato gambas3 con Microsoft SQL SERVER e/o aveva avuto un problema simile.

Ringrazio anticipatamente.









milio:

--- Citazione da: Simo - 28 Aprile 2024, 19:09:48 ---
Quando tento di eseguire una query di selezione con raggruppamento:
SQL = "SELECT SUM(collicar) as Tot_Colli FROM anaetichette WHERE lotto = '722078' GROUP BY lotto"

L'oggetto result sembra essere sempre vuoto, la proprietà rs.Available è sempre = False.

Qui di seguito il codice:

         rs = $con.Exec("SELECT SUM(collicar) as Tot_Colli FROM anaetichette WHERE lotto = '722078' GROUP BY lotto")
         WHILE (rs.Available)
               PRINT "record trovato: Tot colli:" & rs!Tot_Colli
               rs.MoveNext()
         WEND

Credo di sbagliare qualcosa, vi sarei grato se poteste darmi qualche dritta o consiglio in merito al problema.
Più in generale volevo sapere se qualcuno aveva già usato gambas3 con Microsoft SQL SERVER e/o aveva avuto un problema simile.

Ringrazio anticipatamente.

--- Termina citazione ---


Prova in questo modo e vedi se ti ritorna qualcosa:

--- Codice: ---
rs = $con.Exec("SELECT SUM(collicar) as Tot_Colli FROM anaetichette WHERE lotto = '722078'  GROUP BY lotto;")

For Each rs
  PRINT "record trovato: Tot colli:" & rs!Tot_Colli
Next
--- Termina codice ---

Simo:
Grazie per la celere risposta.

Ho provato anche col For Each come da te suggerito, ma non entra nel ciclo FOR come se il recorset fosse vuoto...

Ci sono altri suggerimenti o test che posso fare?

Gianluigi:

--- Citazione da: Simo - 30 Aprile 2024, 21:03:25 ---Ci sono altri suggerimenti o test che posso fare?

--- Termina citazione ---

In una discussione sulla ML viene data questa risposta alla richiesta di codice per interrogare con ODBC:

--- Citazione ---Il mio codice è tutto in funzione che chiama la funzione e non è realmente riutilizzabile, ma il punto principale è utilizzare una raccolta per archiviare il set di risultati e quindi ottenere dati dalla raccolta poiché il set di risultati di ODBC non è enumerabile. Il resto è lo stesso di altri DB
--- Termina citazione ---

Qui si parla di ODBC sulla nostra wiki:
https://www.gambas-it.org/wiki/index.php/ODBC

E qui sul libro tedesco:
https://gambas-buch.de/doku.php?id=k22:k22.9:start

 :ciao:

milio:
A parte la proprietà count che mi ritorna sempre -1 anche se il recordset contiene di fatto dei dati, ho provato anch'io a fare dei test di raggruppamento... A me non da problemi la query...

Ma se esegui questa query:


--- Codice: ---
rs = $con.Exec("SELECT * FROM anaetichette WHERE lotto = '722078' ;")

For Each rs
  PRINT "record trovato: " & rs[0]
Next
--- Termina codice ---

ti ritorna dei dati?

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa