Newsgroup: it.comp.programmare.win32
Titolo: VC++: aprire un DB con più tabelle

Ho un database di tipo DAO con piů di una tabella e voglio aprirne una
specifica, ma utilizzando la funzione Open della CDaoRecordset in questo
modo:
m_pSet->Open(AFX_DAO_USE_DEFAULT_TYPE, _T("[Utenti],[Connessioni]"), 0);
mi da il seguente messaggio di errore: "Parametri insufficienti. Previsto
1".
Come posso fare?
grazie.

 1".
Nel tuo messaggio dici di voler aprire una tabella, ma da come chiami il
metodo Open sembra che tu voglia aprirne due... Comunque prova con:
m_pSet->Open(AFX_DAO_USE_DEFAULT_TYPE, _T("SELECT Utenti.*, Connessioni.*
FROM Utenti, Connessioni"));
--
  Jerle Shannara
Per rispondere in email togli JERLEANTISPAM
homepage 
http://utenti.tripod.it/jerleshannara

BeginWaitCursor(); try {    // prova ad aprire il database
dell'applicazione    // m_db è di tipo CDaoDatabase e gli altri
parametri della funzione    // Open rappresentano il percorso completo
del db, la modalità di	  // condivisione e la modalità di accesso R/W	
   pDoc->m_db.Open(pDoc->m_strPathDB, pDoc->m_bExclusive,     
pDoc->m_bReadOnly, _T(""));	 TRACE0("*** Oggetto CDaoDatabase
inizializzato in modo regolare\n"); } catch (CDaoException* e) {    //
in caso di errore sull'apertura del DB visualizza un messaggio di    //
errore	  AfxMessageBox(e->m_pErrorInfo->m_strDescription);   
EndWaitCursor();    e->Delete();    return; } EndWaitCursor();	// apre
una tabella pDoc->m_pSetRecord = new CDaoRecordset(&pDoc->m_db);
TRACE0("*** Oggetto m_pSetAnagrafica creato in modo regolare\n");
BeginWaitCursor(); try {    // prova ad aprire la tabella Anagrafica   
pDoc->m_pSetRecord->Open(dbOpenTable, _T("Anagrafica"), 0);   
TRACE0("*** Recordset m_pSetAnagrafica aperto in modo regolare\n"); }	
// in caso di errore sull'apertura della tabella Anagrafica visualizza	
 //un messaggio di errore catch (CDaoException* e) {   
AfxMessageBox(e->m_pErrorInfo->m_strDescription);    EndWaitCursor();	
e->Delete();	TRACE0("*** Funzione CRubricaView::InsertItemRubrica()
(END)\n");    return; } EndWaitCursor();  Ciao, Sergio

"Jerle Shannara" <alf...@JERLEANTISPAMinwind.it> ha scritto nel messaggio
news:r1999.90086$lu5.2...@twister1.libero.it...

Ho provato il tuo suggerimento ma mi da lo stesso errore.
Inoltre mi sono accorto che se con il ClassWizard clicco su 'Update Columns'
e carico solo una tabella del db, nell'elenco mi appare un campo in più con
lo stesso nome del primo campo 'IDutente'.
Se gli assegno una variabile in esecuzione mi appare subito il seguente
messaggio:
"Il  riferimento al campo specificato 'IDutente' potrebbe essere relativo a
più tabelle elencate nella proposizione FROM dell'istruzione SQL"
se non gli assegno niente mi da il precedente errore.
Se carico tutte e due le tabelle il campo in più scompare. Pero in
esecuzione è come se cercasse questo campo.
Infatti premesso che 'Utenti' ha 4 campi e 'Connessioni' 8 se cerco di
aprire solo 'Utenti' mi da:
"Parametri insufficienti. Previsto 9"
con 'Connessioni':
"Parametri insufficienti. Previsto 5"
quindi aprendo una tabella è come se cercasse l'altra e viceversa, più quel
campo fantasma.
grazie nuovamente

 grazie nuovamente
Sembra che tu abbia instaurato una sorta di dipendenze tra le tabelle del
database. Sinceramente non mi sono mai trovato in una simile condizione,
forse puoi provare con l'inner di SQL:
SELECT Utenti.*, Connessioni.* FROM Utenti INNER JOIN Connessioni ON
Utenti.IDutente = Connessioni.IDutente;
o qualcosa di simile.
In alternativa, se puoi, cerca di eliminare ciò che causa la dipendenza,
anche se mi rendo conto che è un modo davvero sporco per far funzionare il
tutto.
