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.
Prova in questo modo e vedi se ti ritorna qualcosa:
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
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:
rs = $con.Exec("SELECT * FROM anaetichette WHERE lotto = '722078' ;")
For Each rs
PRINT "record trovato: " & rs[0]
Next
ti ritorna dei dati?
Per Milio: potresti fornirci qualche dettaglio in più sul tuo scenario operativo? (quali ODBC e versioni Gambas/Distro linux?)
Grazie
Distro: Kubuntu 22.04
Versione Gambas: 3.19.1
ODBC: FreeTDS (versione pacchetto 1.3.6-1)
tdsodbc (versione pacchetto 1.3.6-1)
Per il collegamento al Database nel file freetds.conf:
[Mago]
host = 192.168.1.75
port = 1305
tds version = 8.0
client charset = UTF-8
Parametri nel file odbcinst.ini:
[Ms-Sql]
Description=
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Driver64=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so
Setup64=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
UsageCount=1
CPTimeout=
CPTimeToLive=
DisableGetFunctions=
DontDLCLose=
ExFetchMapping=
Threading=
FakeUnicode=
IconvEncoding=
Trace=
TraceFile=
TraceLibrary=
CPReuse=
parametri nel file odbc.ini:
[Mago]
Description=Ms-Sql
Driver=Ms-Sql
Servername=Mago
Database=LavanderiaNET
UID=######
PWD=######
Port=1305
...con FreeTDS il raggruppamento funziona correttamente, ma va in crash nel caso in cui uno dei campi di aggregazione della select contiene un valore null.
Io ho provato a fare dei test in questo modo:
ho modifcato il dato nel database mettendo il valore Null nel campo 'UM' in un record a caso contenente l'articolo '29'
poi ho eseguito questo codice:
hRes = DbMago.Exec("SELECT SUM(ritirato) as somma, cliente, UM FROM SI_BolletteRighe WHERE articolo = '29' group by cliente, UM;")
For Each hRes
Print hRes["somma"], hRes["cliente"], IIf(IsNull(hRes["UM"]), "NULL", hRes["UM"])
Next
e mi ritorna correttamente in console senza andare in crash:
2 1887 NULL
1 1034 PZ
274 1862 PZ
5 1887 PZ
22 1911 PZ
245 2278 PZ
361 2311 PZ