| Michele Lepri |
Problema con metodo Append dell'interfaccia Keys di ADOX
Salve a tutti!
Mi trovo in questa situazione: aggiungere la chiave primaria ad una tabella Access con ADOX. L'assembly wrapper creato in automatico crea per la collection Keys (le chiavi) un'interfaccia con il metodo Append che accetta tutti i 5 parametri possibili: chi l'ha usato in VB6 (l'ho visto dagli esempi) il parametro obbligatorio è solo il primo(gli altri son opzionali). Visto che l'interfaccia non prevede altri overload son contretto ad usare quello. Il metodo ha questa firma: void Append(object Item, KeyTypeEnum Type, object Column, string RelatedTable, string RelatedColumn); Il terzo parametro negli esempi(e nella guida ufficiale) dice di usarlo come stringa e deve essere il nome della colonna. Il metodo funziona, ma solo se mi trovo nella condizione che la chaive sia formata da una sola colonna; se devo usare una chiave con più colonne son costretto ad usare solo il primo parametro(mi costruisco l'oggetto "a mano"), agli altri dunque dovrei assegnare valori di default. Inutile dire che le ho provate tutte (null, string.Empty, ecc..)ma ottengo un errore che mi dice che i parametri non sono validi. Ho però trovato un esempio in VC++, che va ad usare tutti i parametri; riporto le parti interessanti: (CUT) // To pass as column parameter to Key's Apppend method _variant_t vOptional; vOptional.vt = VT_ERROR; vOptional.scode = DISP_E_PARAMNOTFOUND; // Append the foreign key. m_pCatalog->Tables->GetItem("Orders")->Keys->Append(_variant_t((IDispatch *)m_pKeyForeign),adKeyPrimary,vOptional,L"",L""); (CUT) In pratica si capisce che usa un obj di classe _variant_t(a cui assegne 2 campi) e lo usa come parametro predefinito per il parametro Column. La mia domanda dunque è (finalmente): come posso ricreare questa situazione in c#? Immagino che dovrei importare qualche dll com, ma ho fatto una ricerca e non mi trova questa benedetta classe _variant_t: dunque a cosa corrisponde nel .NET framework? Ciao e grazie! Michele |
| Michele Lepri |
Re: Problema con metodo Append dell'interfaccia Keys di ADOX
Grazie a Luciano Bastianello
bastava fare: objTable.Keys.Append(objKey,ADOX.KeyTypeEnum.adKeyPrimary,System.Reflection.Missing.Value,string.Empty,string.Empty); ciao! |