Newsgroup: it.comp.lang.visual-basic
Titolo: Conversione query access

Sto passando su VB 2005 EE un database di access e ho bisogno di popolare un datagrid con i valori di una query:
 
Il datagrid lo popolo così:
 
Public Sub CaricaDatiCQ()
 
        adapterCQIP = New OdbcDataAdapter("Select campo1, Campo2 From Tabella ecc...)", MiaConnessioneODBC)
 
        dsCQIP = New DataSet
        adapterCQIP.Fill(dsCQIP, "Tabella")
        dgvLista.DataSource = dsCQIP.Tables("Tabella")
  End Sub
 
il Fill è dato come si vede da ds + tabella il problema è che in access lavoro con più tabelle.
 
Come adatto questa query al codice qui sopra (compresi eventuali ' nei posti giusti)?
 
SELECT dbo_CHOICE_LIST.CLIST_NAME, dbo_CHOICE.CHOICE, dbo_CHOICE.CLIST_ID
FROM dbo_CHOICE_LIST INNER JOIN dbo_CHOICE ON dbo_CHOICE_LIST.CLIST_ID = dbo_CHOICE.CLIST_ID
WHERE (((dbo_CHOICE_LIST.CLIST_NAME) Like "Gen*Op*" And (dbo_CHOICE_LIST.CLIST_NAME) Not Like "*Microp*"));
 
grazie
Marco
 
 
 

On 12/09/2012 11:31, Marco75 wrote:
zac
Rieccoci! :)...presumo che allora le letture o non siano state fatte o 
non assimilate!
 
Calma e gesso.....il data adapter è una FACILITAZIONE per pigri!
Come tutte le versioni CONSUMER non puoi pretendere prestazioni PRO!!!
 
Ciò significa che "SE" hai tabelle relazionate ( qualsiasi db sia )
 
La select funzionerà benissimo (la imputi tu) NON altrettanto le varie 
update e create eventualmente autogenerate!
PER quelle dovreai andare di manina e farti un bel COMMAND con tutti i 
PARAMETER del caso e le avvertenze del caso!
 
Se farai cosi anche l'update del dataadapter funzionerà
 
perchè ancora non hai mi sembra capito una cosa:
 
TU LAVORI IN LOCALE in dotnet e tutto ti funziona nella griglia che è 
LOCALE! i casini sono far diventare questo mondo virtuale...reale! Ossia 
trasportare i cambiamenti EFFETTIVAMENTE sul database!
Per quanto lo mascheri il dataadapter la via è:
invocare un oggetto Command che si "trasporta con se "un oggetto 
connection che tramite questa connection esegue una query sql verso il 
database!....ed eventualmente gestisce la risposta!
 
Nei link spediti c'era tutto!
 
 
 
nello specifico
SELECT dbo_CHOICE_LIST.CLIST_NAME, dbo_CHOICE.CHOICE, dbo_CHOICE.CLIST_ID
FROM dbo_CHOICE_LIST INNER JOIN dbo_CHOICE ON dbo_CHOICE_LIST.CLIST_ID = 
dbo_CHOICE.CLIST_ID
WHERE (((dbo_CHOICE_LIST.CLIST_NAME) Like "Gen*Op*" And 
(dbo_CHOICE_LIST.CLIST_NAME) Not Like "*Microp*"));
 
che problema c'è? cambiare i " con i '  ???? Dai non dirmi che non ci 
arrivi!
;)


Avevo solo chiesto se con tabelle relazionate bastava modificare adapterCQIP.Fill(dsCQIP, "Tabella") con "qualcosa" al posto di "Tabella"
Per quanto riguarda " e ' ho provato ma non riesco a far funzionare il tutto.
Da quanto ho capito forse mi conviene passare alla versione PRO e popolare i miei oggetti usando Configurazione origine dati la quale ora non funziona se non su SQL server locale..
Per ora abbandonerò il progetto, mi tengo la versione access che sta funzionando! 
Marco

> On 12/09/2012 11:31, Marco75 wrote:
 
a me spiace se abbandoni il progetto...sopratutto perchè fra le righe 
leggo una "arresa" tua!
Quello che vorrai fare....usare una configurazione guidata....non ti 
solleverà dai casini...ma SOSTITUIRA' un casino con altri casini!
 
Programmare NON significa usare un wizard! Usare un wizard lo fà anche 
il mio commercialista! Solo che poi non ha la pretesa di definirsi 
"programmatore".
 
Se non capisci cosa fai ANCHE creazione guidata appena chiedi qualcosa 
di non previsto dal wizard ti lascierà a piedi!
E comunque il wizard sarà sempre una soluzione "generalistica" non 
ottimizzata !
 
I casini possono essere:
1) Scrittura dell'sql : ACCESS -> SQLserver i due dialetti sql non sono 
coincidenti
2) Schema della tabella: Access ha delle tipologie di dati SQLserver 
anche altri. Le primary key sono correttamente impostate? indici?
3) Dati della tabella: record vuoti campi non correttamente imputati? 
es. Access integer Sqlserver Varchar ?
4) Privilegi dell'utente: access se ne frega (sopratutto se lo colleghi 
monoutente) ma in sqlserver...(e in generale nel db clientserver) PUOI 
leggere dati? e scriverli?Sei un utente accreditato dei privilegi per farlo?
 
 
Tutto ciò esula come vedi da dotNet!
 
Come fare a mettere a posto la query?
Non ti fidi della tua memoria nello scrivere la query un VStudio?
 
 
USA ACCESS come frontend....
access può connettere una base dati esterna...e ovviamente è 
privilegiato SQLserver (se non sbaglio i ricordi si chiama progetto il 
template da scegliere in "nuovo" dentro access)
collega il tuo server ed usa il query generator di access per farti la 
tua query....poi clicca su SQL in alto per vedere il codice generato da 
incollare nel tuo command!!!
 
 
OVVIAMENTE
tutto ciò presuppone che tu abbia voglia di imparare e tempo da dedicare 
allo studio!!! ...altrimenti di cosa parliamo??? Del fatto che vuoi la 
pappa scodellata?...dimmi di no per favore!
 
Ciao!

> (dbo_CHOICE_LIST.CLIST_NAME) Not Like "*Microp*"));
 
" -> '
* -> %
 
http://sqlserver2000.databases.aspfaq.com/what-are-the-main-differences-between-access-and-sql-server.html
 
 
http://msdn.microsoft.com/it-it/library/ms190301