Newsgroup: it.comp.lang.vo-clipper
Titolo: Campi TEXT in MySql

Vi espongo il mio ennesimo problema con MySql
Ho creato una tabella MySql come appresso indicato
----------------------------
CREATE TABLE tescont (
  codice int(10) unsigned zerofill NOT NULL auto_increment,
  inpout char(1) NOT NULL default '',
  utente int(10) unsigned zerofill NOT NULL default '0000000000',
  data varchar(8) NOT NULL default '',
  oraini varchar(4) NOT NULL default '',
  orafin varchar(4) NOT NULL default '',
  codintscu int(10) unsigned zerofill NOT NULL default '0000000000',
  ricodata varchar(8) NOT NULL default '',
  ricora varchar(4) NOT NULL default '',
  riconote text NOT NULL,
  notecont text NOT NULL,
  indigrad smallint(4) NOT NULL default '0',
  PRIMARY KEY  (codice),
  KEY codintscu (codintscu)
) TYPE=MyISAM COMMENT='Testate dei contatti';
---------------------------------
Per popolare i campi utilizzo il seguente codice VO:
+++++++++++++++++++++++++++++++++++++++++++++++
SELF:oTesCont := TesCont{, oConneCC}
...
...
IF SELF:oTesCont:Append()
  SELF:oTesCont:utente    := nUser
  SELF:oTesCont:data      := DToS(Today())
  SELF:oTesCont:codintscu := SELF:oClienti:codintscu
  SELF:oTesCont:oraini    := StrTran(SELF:cIniCont, ":")
  SELF:oTesCont:orafin    := StrTran(Time(), ":")
  SELF:oTesCont:inpout := iif(SELF:oCCRbRic:Pressed, "R", "E")
  IF Empty(SELF:oDCNoteRiconta:CurrentText)
    SELF:oTesCont:ricora    := NULL_STRING
    SELF:oTesCont:ricodata  := NULL_STRING
   ELSE
    SELF:oTesCont:ricodata  := DToS(SELF:oDCDataDaRiconta:SelectedDate)
    SELF:oTesCont:ricora    := StrTran(SELF:oDCOraDaRiconta:SelectedTime,
":")
  ENDIF
  SELF:oTesCont:riconote    := SELF:oDCNoteRiconta:CurrentText  && Controllo
MultiLineEdit
  SELF:oTesCont:notecont    := SELF:oDCAnnotazioni:CurrentText  && Controllo
MultiLineEdit
  SELF:oTesCont:indigrad    := SELF:oDCHsGradi:ThumbPosition
  IF SELF:oTesCont:GoTop()
    SELF:oTesCont:Commit()
    SELF:oSelect := SQLSelect{"SELECT LAST_INSERT_ID()", oConneCC}
    iNewCont := Val(SELF:oSelect:FIELDGET(1))
  ENDIF
  .......
+++++++++++++++++++++++++++++++++++++++++++++++
Riesco a riempire tutti i campi tranne quelli di tipo text: riconote e
notecont.
che vorrei popolare con il contenuto di due MultiLineEdit ma purtroppo
mi rimangono irrimediabilmente vuoti !
Qualcuno puň aiutarmi ?
Grazie a tutti
Claudio Carletta

Nelle impostazioni degli ODBC hai messo a true (checkBox) l'opzione don't
optimize column width? il problema è che VO si comporta in modo strano se
hai settato a falso detto parametro.Se imposti gli ODBC da programma il
valore di Option dovrà essere 1 se la connesione è ad un numero IP 8139 se a
localhost o ad un pipe named.
Inoltre, il valori delle multilineedit contengono caratteri strani ?
Ti riporto la funzione per settare gli ODBC da programma, così non devi
installare gli ODBC su ogni stazione, ma solo inserire la DLL myodbc3.dll
nel programma di installazione nella cartella windows/system
****************************************************************************
*****************************************************************
FUNCTION SettaODBC(cODBC AS STRING,cDatabase AS STRING,cServer AS
STRING,cUser AS STRING,cPassWord AS STRING,cPorta 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"
pszSubKey := PSZ(_CAST,  "Software\ODBC\ODBC.INI\"+cODBC)
RegDeleteKey(HKEY_CURRENT_USER, pszSubKey)
lRes := RegCreateKeyEx(HKEY_CURRENT_USER, pszSubKey, 0,;
    PSZ(_CAST, "STRING"), REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,;
   NULL, @hKey, @dwDis)
IF lRes != ERROR_SUCCESS
 Mostra("Errore nell'apertura del file di registro di Windows MySQL "+cODBC)
 RETURN FALSE
ENDIF
RegSetValueEx(hKey, PSZ(_CAST, "Driver"), 0, REG_SZ, PSZ(_CAST,
cSystemPath),SLen(cSystemPath)+1)
RegSetValueEx(hKey, PSZ(_CAST, "Description"), 0, REG_SZ, PSZ(_CAST, "MySQL
ODBC 3.51 Driver DSN"),27)
RegSetValueEx(hKey, PSZ(_CAST, "Database"), 0, REG_SZ, PSZ(_CAST,
cDatabase ), SLen(cDatabase)+1)
RegSetValueEx(hKey, PSZ(_CAST, "Server"), 0, REG_SZ, PSZ(_CAST,
cServer),SLen(cServer)+1)
RegSetValueEx(hKey, PSZ(_CAST, "User"), 0, REG_SZ, PSZ(_CAST, cUser),
SLen(cUser)+1)
RegSetValueEx(hKey, PSZ(_CAST, "Port"), 0, REG_SZ, PSZ(_CAST, cPorta),
SLen(cPorta)+1)
IF Empty(cPassWord)
 RegSetValueEx(hKey, PSZ(_CAST, "Password"), 0, REG_SZ, String2Psz(""),1)
ELSE
 RegSetValueEx(hKey, PSZ(_CAST, "Password"), 0, REG_SZ, PSZ(_CAST,
cPassWord),SLen(cPassWord)+1)
ENDIF
IF !Empty(cPorta)
 RegSetValueEx(hKey, PSZ(_CAST, "Port"), 0, REG_SZ, PSZ(_CAST, " "),3)   //
da reinserire se la porta non è la 3306 //
ENDIF
RegSetValueEx(hKey, PSZ(_CAST, "Option"), 0, REG_SZ, PSZ(_CAST, "1"), 2)
IF !IsAddressIp(cServer) .AND. !(cServer = "localhost")
 RegSetValueEx(hKey, PSZ(_CAST, "Option"), 0, REG_SZ, PSZ(_CAST, "8193"),5)
ELSE
 RegSetValueEx(hKey, PSZ(_CAST, "Option"), 0, REG_SZ, PSZ(_CAST, "1"), 2)
ENDIF
RegCloseKey(hKey)
pszSubKey := PSZ(_CAST,  "Software\ODBC\ODBC.INI\ODBC Data Sources")
lRes := RegCreateKeyEx(HKEY_CURRENT_USER, pszSubKey, 0,;
    PSZ(_CAST, "STRING"), REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,;
   NULL, @hKey, @dwDis)
IF lRes != ERROR_SUCCESS
 Mostra("Errore nell'apertura del file di registro di Windows (ODBC Data
Sources)")
 RETURN FALSE
ENDIF
RegSetValueEx(hKey, PSZ(_CAST, cODBC), 0, REG_SZ, PSZ(_CAST, "MySQL ODBC
3.51 Driver"),6)
RegCloseKey(hKey)
pszSubKey := PSZ(_CAST,  "Software\ODBC\ODBCINST.INI\MySQL ODBC 3.51
Driver")
lRes := RegCreateKeyEx(HKEY_LOCAL_MACHINE, PSZSubKey, 0, ;
    PSZ(_CAST, "STRING"), REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,;
   NULL, @hKey, @dwDis)
IF lRes != ERROR_SUCCESS
 Mostra("Errore nell'apertura del file di registro di Windows MySQL")
 RETURN FALSE
ENDIF
RegSetValueEx(hKey, PSZ(_CAST, "Driver"), 0, REG_SZ, PSZ(_CAST,
cSystemPath),SLen(cSystemPath)+1)
RegSetValueEx(hKey, PSZ(_CAST, "Setup"), 0, REG_SZ, PSZ(_CAST,
cSystemPath),SLen(cSystemPath)+1)
RegSetValueEx(hKey, PSZ(_CAST, "APILevel"), 0, REG_SZ, PSZ(_CAST, "2"),2)
RegSetValueEx(hKey, PSZ(_CAST, "ConnectFunctions"), 0, REG_SZ, PSZ(_CAST,
"YYN"),4)
RegSetValueEx(hKey, PSZ(_CAST, "CPTimeout"), 0, REG_SZ, PSZ(_CAST, "60"),3)
RegSetValueEx(hKey, PSZ(_CAST, "DriverODBCVer"), 0, REG_SZ, PSZ(_CAST,
"03.51"),6)
RegSetValueEx(hKey, PSZ(_CAST, "FileUsage"), 0, REG_SZ, PSZ(_CAST, "0"),2)
RegSetValueEx(hKey, PSZ(_CAST, "FileExtns"), 0, REG_SZ, PSZ(_CAST,
"*.txt"),6)
RegSetValueEx(hKey, PSZ(_CAST, "SQLLevel"), 0, REG_SZ, PSZ(_CAST, "1"),2)
RegCloseKey(hKey)
RETURN TRUE
*********************************************************************
FUNCTION IsAddressIp(cVal AS STRING) AS LOGIC
// 10.0.0.1 //
IF Occurs(".",cVal) = 3 .AND. AllIsDigit(StrTran(cVal,".",""))
 RETURN TRUE
ELSE
 RETURN FALSE
ENDIF
*********************************************************************
FUNCTION Mostra(cFrase AS USUAL)
//g Functions/Interfaccia
//l Disegna a video un Box con bottone OK.
//d Disegna a video un Box con bottone OK e attende la pressione di un
Click.
//x Mostra(cFrase AS USUAL)
//p <cFrase> La frase nel Box di qualsiasi tipo, pensa la funzione a
trasformarla in STRING.
//e es: Mostra("Attenzione")
//e     Mostra(1237600)
//e     Mostra(Ctod("01/01/1999"))
//i FUNC:Allerta
//i FUNC:MostraAllaBarra
//r NIL
LOCAL  oWB AS TEXTBOX
                     oWB:= TextBox{ ,"Nota" ,;
                                                   xtoc(cFrase)}
                     oWB:type := BOXICONEXCLAMATION  + BUTTONOKAY
              oWB:Show()
RETURN  NIL
****************************************************************************
*********
FUNCTION xtoc(campo AS USUAL) AS STRING
LOCAL  cType := ValType(campo)   AS STRING
LOCAL  nInt   AS DWORD
LOCAL  nDec   AS DWORD
LOCAL  cNum AS STRING
    DO CASE
       CASE ctype == "C" .OR. cType == "M"
            campo := campo
       CASE ctype == "A"
        cNum := ""
  FOR nInt := 1 TO ALen(campo)
   IF ValType(campo[nInt]) == "A"
    FOR nDec := 1 TO ALen(campo[nInt])
     cNum := cNum + xtoc(campo[nInt,nDec])+","
    NEXT
    cNum := cNum + CHR(13)
   ELSE
    cNum := cNum + xtoc(campo[nInt])+CHR(13)
   ENDIF
  NEXT
  RETURN cNum
       CASE ctype == "N"
   campo := StrTran(NTrim(campo),",",".")
       CASE ctype == "D"
            campo := DToC(campo)
       CASE ctype == "L"
            campo := IF(campo,"1","0")
       CASE ctype == "#"
   campo := Symbol2String(campo)
       CASE ctype == "@-"
   IF campo == NULL_PTR
          campo := "NULL_PTR"
         ELSE
          campo := "Tipo PTR, byte letti:"+Str1(PtrLen(campo))
         ENDIF
       CASE ctype == "U"
      campo := "NIL"
       OTHERWISE
            campo := ""
    ENDCASE
RETURN  campo
****************************************************************************
************************
FUNCTION WindowsSistemDirectory AS STRING
LOCAL pszBuffer AS PSZ
LOCAL cWinDir AS STRING
pszBuffer := MemAlloc( 50 )
GetSystemDirectory(pszBuffer,50)
cWinDir := Psz2String(pszBuffer)
MemFree( pszBuffer )
RETURN cWinDir
****************************************************************************
**********************
Danilo Giuliani
www.softdevo.com
in...@softdevo.com
sup...@softdevo.com

 ha scritto nel messaggio
news:_Mhnb.56107$e5.20...@news1.tin.it...


 > Qualcuno può aiutarmi ?


 ha scritto nel messaggio
news:1bqnb.365496$R32.12...@news2.tin.it...


 dall'applicazione ?
No, l'applicazione fa quello che tu fai a mano.
