Principale utente con più risposte
query da access a vb.net 2010 non và

Domanda
-
Salve a tutti scusate in anticipo sto cercando di passare da acccess a vb.net creando un interfaccia ad un db perfettamente funzionante ma mi sono imbatuto in un problema che non mi spiego.
in access ho una maschera continua che pesca i dati da due tabelle.
tbl_equipment : tbl_equi_app: ID=chiave primaria
id_equi = chiaveprimaria <relazione 1 a molti Equipment_Name=numerico (chiave esterna
Equipment_Name=testo pieces=numerico
price=valuta
creo la query in modo che quando digito Id_equi mi recupera i valori dell'equipagiamento e mi calcola a secondo dei pezzi(pieces) il totale davvero comodo ed elemetare in Access .
SELECT tbl_equi_app.ID, tbl_equi_app.ID_entry, tbl_equi_app.ID_Equipment, tbl_equipment.Equipment_Name, tbl_equi_app.pieces, tbl_equipment.price, [pieces]*[price] AS tot FROM tbl_equipment INNER JOIN (tbl_entry INNER JOIN tbl_equi_app ON tbl_entry.ID_entry = tbl_equi_app.ID_entry) ON tbl_equipment.ID_Equipment = tbl_equi_app.ID_Equipment;
sto cercando di fare la stessa cosa in vb.net usando un datagrid ho modificato al query in questa manieraSELECT tbl_equi_app.ID, tbl_equi_app.ID_entry, tbl_equi_app.ID_Equipment, tbl_equipment.price, tbl_equi_app.pieces, tbl_equipment.price * tbl_equi_app.pieces AS tot FROM (tbl_equi_app INNER JOIN tbl_equipment ON tbl_equi_app.ID_Equipment = tbl_equipment.ID_Equipment)
ma tutto diventa di solo lettura e non riecoa prelevare i dati dalla tabella Equpment insomma non ci capisco na mazza
Grazie per ogni vostro consiglio.
Giovanni_A
Risposte
-
Utilizzando le DataTable puoi impostare i comandi di aggiornamento direttamente sul DataAdapter e differenziare le query di select da quelle di update. Su MSDN a questo indirizzo:
http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbdataadapter(v=vs.80).aspx
c'è un esempio che fa proprio al caso tuo.
In buona sostanza usi una query per recuperare i dati con il SelectCommand e lui ti mappa tutte le variabili sulle varie colonne, dopodiché indichi all'update, al delete e all'insert command quali sono i loro statment SQL da usare per aggiornare il DB.
Questa funzionalità è supportata anche dal designer della DataTable.
HTH
Alberto De Luca [MVP - Visual Basic .NET]
- Contrassegnato come risposta Giovanni_A mercoledì 10 ottobre 2012 13:55
Tutte le risposte
-
In access sei direttamente sul DB e la logica di aggiornamento è gestita dal motore integrato che riesce a fare l'upgrade della tabella in query poichè conosce come i campi sono mappati. In vb.net la query che tu interroghi sul db appare lato client come fosse una tabella risultante dall'operazione, appunto, di query. Il provider odbc con cui recuperi i dati non vede l'origine effettiva dei dati bensì soltanto una loro rappresentazione tabellare e per questo non è capace di generare i comandi necessari all'aggiornamento.
HTH
Alberto De Luca [MVP - Visual Basic .NET]
-
Ciao Alberto grazie della risposta come potrei aggirare il tutto?
io dovrei fare in modo che in un datagrid potessi recuperare "Id" Equipaggiamento e "prezzo_equp" e poterlo calcolare con i "Pezzi" per poter ottenere il totale in rete una volta avevo trovato un video con qualcosa del genere ma adesso che lo cerco non lo trovo.
Grazie ancora dell'inrteressamento.
Giovanni_A
-
-
-
Utilizzando le DataTable puoi impostare i comandi di aggiornamento direttamente sul DataAdapter e differenziare le query di select da quelle di update. Su MSDN a questo indirizzo:
http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbdataadapter(v=vs.80).aspx
c'è un esempio che fa proprio al caso tuo.
In buona sostanza usi una query per recuperare i dati con il SelectCommand e lui ti mappa tutte le variabili sulle varie colonne, dopodiché indichi all'update, al delete e all'insert command quali sono i loro statment SQL da usare per aggiornare il DB.
Questa funzionalità è supportata anche dal designer della DataTable.
HTH
Alberto De Luca [MVP - Visual Basic .NET]
- Contrassegnato come risposta Giovanni_A mercoledì 10 ottobre 2012 13:55
-
-
Salve Aalberto ho smanettato tante ore ma alla fine con un piccolo stratagemme anche se credo che non sia propio da manuale ma funziona ho modificato la query in questa maniera e come hai detto tu dato che si lavora con i dati disconnessi i risultati si vedono solo dopo che si salva e si ricarica il dataset.
SELECT tbl_equi_app.ID, tbl_equi_app.ID_entry, tbl_equi_app.ID_Equipment, tbl_equi_app.pieces, tbl_equi_app.pieces * tbl_equipment.price AS tot, tbl_equi_app.pieces * tbl_equipment.price / tbl_equi_app.pieces AS Prezzo FROM (tbl_equi_app INNER JOIN tbl_equipment ON tbl_equi_app.ID_Equipment = tbl_equipment.ID_Equipment)
Grazie ancora ,
Giovanni_A