Domanda

Ora ho visto questa domanda in un altro forum ma non era una risposta accettabile.

Supponiamo di avere due tabelle, la tabella dei Gruppi e gli Elementi della tabella.Le tabelle non sono definiti i rapporti.Gli Elementi della tabella ha un IdGroup campo che si riferisce al IdGroup (PK) campo di tabella dei Gruppi.

Io uso la seguente query attraverso un recordset ADO per popolare le tabelle valori di un datagrid:

SELECT Elements.*, Groups.GroupName
FROM Elements
INNER JOIN Groups ON Elements.IdGroup = Groups.IdGroup

Da che griglia voglio premere Elimina per eliminare un Elemento.Ecco il mio problema.Quando ho usato DAO DAO Delete() funzione eliminato solo il record negli Elementi del gruppo.Questo è il comportamento previsto.

Quando ho cambiato ADO, Delete() la funzione record eliminati in entrambe le tabelle, l'elemento record e il gruppo a cui l'elemento apparteneva!

C'è un modo per riprodurre il DAO comportamento in ADO senza dover definire le relazioni in tabelle?

Nota:So che ci sono alternative (l'esecuzione di ELIMINARE querys potrebbe fare il lavoro).Solo indicarmi un modo per fare questo in ADO, o dire che non può essere fatto.

È stato utile?

Soluzione

Riscrivere la query di:

  • sostituire INNER JOIN con una clausola WHERE che consiste di un ESISTENTE;
  • utilizzare una subquery nella clausola SELECT per restituire il valore dei Gruppi.Nome del gruppo.

Esempio:

SELECT Elements.*, 
       (
        SELECT Groups.GroupName
          FROM Groups 
         WHERE Elements.IdGroup = Groups.IdGroup
       )
  FROM Elements
 WHERE EXISTS (
               SELECT * 
                 FROM Groups 
                WHERE Elements.IdGroup = Groups.IdGroup
              );

Ho provato utilizzando SQL Server 2008 con un recordset ADO impostare la proprietà DataSource di un Microsoft OLEDB Controllo Datagrid (MSDATGRD.OCX) quindi l'eliminazione della riga via della cingerà la veste e (presumo che si sta facendo qualcosa di simile) e la riga viene infatti eliminato dalla tabella Elementi (cioè ala riga in Gruppi resti recuperati).

Nota riveduta query potrebbe avere un impatto negativo sulle prestazioni quando il recupero delle righe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top