Newsgroup: it.comp.lang.visual-basic
Titolo: maledetto MYSQL

Salve ho sviluppato un'applicazione in VB che funziona regolarmente con
SQL SERVER, per problemi di costi di licenze utenti ci siamo dovuti
"buttare" su MYSQL, i problemi ora sono 2 il primo il tempo e quello è un
problema perenne, ma il secondo è perchè non supporta alcune proprietà dei
recordset tipo SELECT COUNT (*) o RS.RECORDCOUNT, come posso fare, sul
sito Mysql ho scaricato ancher il driver ODBC, qualcuno che lavora con DB
Mysql puo' aiutarmi???, magari è un problema di come apro la connessione
(STringa connessione??) DRIVER={MySQL ODBC  Driver};SERVER=server;
DATABASE=pippo;UID=pluto;PWD=pluto; OPTION=3
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 DATABASE=pippo;UID=pluto;PWD=pluto; OPTION=3
Perchè apri un nuov thread quando ancora ti stanno rispondendo alla stessa
domanda in un'altro.
Ho fatto una semplice ricerca su google ed il comando select count su mysql
funziona da anni, sei tu che hai sbagliato o sbagli a scrivere la tua query.
Per quanto riguarda il recordcount potrebbe essere vero che il provider non
ti restituisce il numero di record, in questo caso se apri il recordset
"aduseclient" e non foreward only puoi fare:
rs.movelast
numero = rs.recordcount
ed hai il tuo numero


 >
-- 


se funzionava rs.recordcount non scrivevo
Che driver ODBC stai usando, se č il 3.51 avresti fatto meglio a
leggere le "RELEASE NOTES" ...
Known bugs:
----------
[cut]   
-- From ADO:
   -  When using adUseServer cursor type, the rs.recordcount 
      will always return -1, where as using asUseClient should return 
      the correct value.
   -  Some times client side cursor type (adUseClient) generates
      error 'multi-step generated error' when performing result 
      set add, update or delete. But the same should work fine 
      when using server side cursor (adUseServer) from MyODBC 
      3.51.03 version.
[cut]

 se funzionava rs.recordcount non scrivevo
Credimi, funziona !
' Copiato ed incollato dal prg, e regolarmente funzionante da 1 anno circa
' su 19 macchine in rete, con S.O. W95, W98se, NT4 SP6, XP Home , W2K e XP
Pro SP1
'
          Dim rsMenu As New ADODB.Recordset
          Dim lsSQL As String
10        On Error GoTo errmenuForm
20        lsSQL = "SELECT * from tb_gestmenu "
30        lsSQL = lsSQL & "WHERE NomeForm = '" & lsNomeForm.Name & "' "
40        lsSQL = lsSQL & "AND NomeMenu = '" & lsNomeForm.Name & "' "
50        lsSQL = lsSQL & "ORDER BY ItemOrder ;"
60        rsMenu.Source = lsSQL
70        Set rsMenu.ActiveConnection = gnMySQL
80        rsMenu.CursorLocation = adUseClient
90        rsMenu.Open
100       If rsMenu.RecordCount > 0 Then
110           rsMenu.MoveFirst
                 ecc ........
Ciao
Paolo Ardissone


Ciao Maurop,
Perchè passare a MySql ?
Anche Sql Server ha una versione Free
http://www.microsoft.com/italy/sql/msde/
Il suo limite di 2Gb per database è stato ampliato a 4Gb con la prossima
versione di *SQL Server 2005 Express Edition* eliminando anche il WorkLoad
degli 8 Batch contemporanei
La versione Beta2 è scaricabile da qui
http://lab.msdn.microsoft.com/express/sql/default.aspx
Accedere a un database server con ODBC a mio parere è una retrogressione.
(o forse il problema di licenze non è relativo a Sql Server ?)
Ciao Giorgio

Non so se è questo il tuo caso, ma....
i driver ODBC 3.51 ancora non supportano i cursori lato server.
ora se usi un cursore lato server, allora il risultato che becchi da
recordcount è un bel -1.
Se vuoi trovare il numero di record e continuare ad usare i cursori lato
server..... esegui la quesri due volte, con una conti i record, con l'altra
usi i dati ( se vuoi usare anche un cursore forwardonly).
In ogni caso con ODBC 3.51 non è supportato il cursore lato server ed è
scritto in caratteri cubitali nella documentazione sia di MySQL he di ODBC.
Se usi aduseclient non avrai problemi di sorta.