Newsgroup: it.comp.lang.vo-clipper
Titolo: Cambiare ODBC a RunTime

Se non erro un po' di tempo fa' c'era sul sito di Danilo una Funzione 
per cambiare a RunTime l'impostazione dell'ODBC, ma non la trovo più.
Qualcuno di voi ne ha una copia?
russoc AT 
tin.it
Grazie
Carlo Russo

 Carlo Russo
Carissimo Carlo,
io utilizzo questo:
----------------------------------------------------------------------------
FUNCTION SettaODBC(oWin AS OBJECT, ;
          cODBC AS STRING, ;
          cDatabase AS STRING, ;
          cServer AS STRING, ;
          cUser AS STRING, ;
          cPassWord AS STRING) AS LOGIC
 LOCAL lRes AS LONG
 LOCAL hKey AS DWORD
 LOCAL dwDis AS DWORD
 LOCAL pszSubKey AS PSZ
 LOCAL cSystemPath AS STRING
 cSystemPath := WindowsSistemDirectory() + "\myodbc3.dll" 
// Da controllare
 pszSubKey := PSZ(_CAST,  "Software\ODBC\ODBC.INI\" + cODBC) 
// Da controllare
 RegDeleteKey(HKEY_LOCAL_MACHINE, pszSubKey)
 lRes := RegCreateKeyEx(HKEY_LOCAL_MACHINE, pszSubKey, 0,;
     PSZ(_CAST, "STRING"), REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,;
     NULL, ;
     @hKey, @dwDis)
 IF lRes != ERROR_SUCCESS
  ErrorBox{oWin,[Errore nella creazione del file di registro di Windows 
MySQL ] + cODBC}:Show()
  RETURN FALSE
 ENDIF
 RegSetValueEx(hKey, PSZ(_CAST, "Driver"),  0, REG_SZ, PSZ(_CAST, 
cSystemPath), SLen(cSystemPath)+1)
 RegSetValueEx(hKey, PSZ(_CAST, "Database"), 0, REG_SZ, PSZ(_CAST, 
cDatabase ), SLen(cDatabase)+1)
 RegSetValueEx(hKey, PSZ(_CAST, "Option"),  0, REG_SZ, PSZ(_CAST, "11"), 2) 
// Da controllare
 RegSetValueEx(hKey, PSZ(_CAST, "PWD"),    0, REG_SZ, PSZ(_CAST, cPassWord), 
SLen(cPassWord)+1)
 RegSetValueEx(hKey, PSZ(_CAST, "Server"),  0, REG_SZ, PSZ(_CAST, cServer), 
SLen(cServer)+1)
 RegSetValueEx(hKey, PSZ(_CAST, "UID"),    0, REG_SZ, PSZ(_CAST, cUser), 
SLen(cUser)+1)
 RegSetValueEx(hKey, PSZ(_CAST, "Port"),   0, REG_SZ, PSZ(_CAST, "3306"), 4) 
// Da controllare
 RegSetValueEx(hKey, PSZ(_CAST, "Description"), 0, REG_SZ, PSZ(_CAST, 
"Automatico MySql per "+cDatabase),;
                         SLen("Automatico MySql per "+cDatabase)+1)
 RegCloseKey(hKey)
 pszSubKey := PSZ(_CAST,  "Software\ODBC\ODBC.INI\ODBC Data Sources") 
// Da controllare
 lRes := RegCreateKeyEx(HKEY_LOCAL_MACHINE, pszSubKey, 0,;
     PSZ(_CAST, "STRING"), REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,;
     NULL, ;
     @hKey, @dwDis)
 IF lRes != ERROR_SUCCESS
  ErrorBox{oWin,"Errore nell'apertura del file di registro di Windows (ODBC 
Data Sources)"}:Show()
  RETURN FALSE
 ENDIF
 RegSetValueEx(hKey, PSZ(_CAST, cODBC), 0, REG_SZ, PSZ(_CAST, "MySQL ODBC 
3.51 Driver"), 22)   // Da controllare
 RegCloseKey(hKey)
RETURN TRUE
---------------------------------------------------------------------------------------------
Ciao Claudio 

> cambiare a RunTime l'impostazione dell'ODBC, ma non la trovo più.

Grazie Funziona Perfettamente. Rimane un piccolo problema:
Su Windows Vista non riesco a creare le chiavi di registro almeno ché 
non eseguo l'applicazione in modalità amministratore.
C'è Modo di ovviare a questo inconveniente, magari passando un parametro 
alla funzione RegCreateKeyEx o utilizzando un'altra funzione?
Ciao Carlo

 ha scritto nel messaggio 
news:49984174$0$1110$4faf...@reader2.news.tin.it...

Sono molto spiacente, ma sono competenze al di sopra delle mie possibilità,
detto fra noi ho litigato con Vista :-)
Ciao Claudio