Newsgroup: it.comp.programmare.win32
Titolo: RIPROVO- Inviare un file a SqlServer 7 via ODBC

L'ho gią chiesto, non ho avuto risposte. Riprovo
In un mio programma scritto in VC++ 6.0 devo inviare un file (testo ed
immagini) ad un database SQL Server 7.0 via ODBC.
Qualcuno ha la soluzione?
Grazie
AM

 L'ho già chiesto, non ho avuto risposte. Riprovo

La parte di connessione via ODBC l'ho già sviluppata ed è funzionante.
Riesco ad inserire un record. Non riesco ad inserire anche il file nella sua
colonna di tipo Image di SQL server.
Attendo fiducioso
AM

Come da oggetto! Non capisco se nessuno sa come si faccia (molto strano) o
se il problema è che non mi sono spiegato bene (meno strano) o ancora se c'è
una qualche regola che non conosco.
Diapiace.
AM



ODBC è una API che consente di gestire diversi sistemi di database in modo 
uniforme, consentendo (in teoria) di rendere l'applicazione indipendente 
dal sistema di gestione dati utilizzato. 
Non contiene (per quello che ne so) funzioni di trasferimento file.
Dovresti quindi spiefare un po' più chiaramente cosa devi fare.
L'unica possibilità che mi viene in mente è che puoi gestire i file come 
storage (StgCreate/OpenDocFile) e "rimappare" i loro dati in memoria 
(creando un storage in RAM) per poi andare a copiarne il contenuto in un 
campo binario.
Comunque non ti devi aspettare risposte istantanee (soprattutto in questo 
periodo di ferie per molti) ed è considerata una cattiva abitudine 
ripostare nel giro di pochi giorni la stessa domanda, soprattutto se si 
aggiunge un sollecito (qui nessuno è pagato per rispondere) e un subject in 
maiuscolo (un messaggio in maiuscolo corrisponde ad un messaggio URLATO).
-- 
Valter Minute
min...@inwind.it
 (the reply address of this message is invalid)

 maiuscolo (un messaggio in maiuscolo corrisponde ad un messaggio URLATO).
Si, grazie lo so già. Non volevo essere maleducato ma solo aiutato. Dalla
parte del ng non ho ricevuto per il momento nessun aiuto. Dal canto mio non
credo di essere stato maleducato e quando c'è stato da aiutare qualcuno
(Giulia qualche giorno fa) l'ho fatto. Tutto li.
Vuoi il mio codice?
Ciao
AM

Ciao,
di che tipo di file si tratta? Suppongo sia un documento word o
comunque un file in un formato di quelli piu diffusi (pdf,
excel, ecc).
Il problema non è banale, soprattutto se non lo si è fatto mai
prima. Cosi, in prima istanza direi che probabilmente COM è la
via piu facilemente percorribile soprattutto se il formato del
file che vuoi salvare è proprietario Microsoft. Lasciami qualche
giorno per indagare una via e ti faccio sapere.
Saluti,
Bob Rock
-----------------------------------------------------------
Got questions?  Get answers over the phone at Keen.com.
Up to 100 minutes free!
http://www.keen.com

 Bob Rock
Wow, grazie è un piacere vedere che alla fine qualcuno si degna di
considerare i post. Purtroppo la strada che sono obbligato a seguire è
quella dell'ODBC. Come detto la connessione è stabilita. L'inserimento
avviene. Se devo inserire un file che contiene una stringa di n caratteri,
riesco ad inserirela, se devo inserire un Pdf (questo è il formato che mi
serve) vado in access violation durante l'esecuzione della funzione
SQLPutData. Per cui io temo che il mio errore sia davvero banale ma non
riesco a beccarlo. Questo è il pezzo di codice nel quale secondo me c'è
l'errore..
 retcode = SQLBindParameter(
           hstmt,                                // hstmt
            1,                                      // ipar
            SQL_PARAM_INPUT,    // fParamType
            SQL_BINARY,                // fCType
            SQL_LONGVARCHAR, // FSqlType
            lbytes,                               // cbColDef
            0,                                      // ibScale
            (void *)1,                          // rgbValue
            0,                                       // cbValueMax
            &cbTextSize);                   // pcbValue
 sprintf(buffer, "INSERT into pdf VALUES ('%s', '%s','%s','%s',?)",
  titolo, soggetto, autore, parchiave);
 retcode = SQLExecDirect(hstmt, (SQLCHAR*)buffer, SQL_NTS);
 retcode = SQLParamData(hstmt, &pParmID);
 if (retcode == SQL_NEED_DATA)
    {
        while (lbytes > cbBatch)
        {
            SQLPutData(hstmt, dieci, cbBatch);
            lbytes -= cbBatch;
        }
        final batch
  SQLPutData(hstmt, &dieci, lbytes);
    }
Grazie
AM