Newsgroup: it.comp.lang.visual-basic
Titolo: Stampa query

Ciao,
utilizzo una textbox per creare una query sql (su db access);
come faccio poi a stampare (a video, ma anche su carta) il risultato
della query su un form?
Poi, il form1 (dove viene creata la query) apre il form2 (dove viene
visualizzato il risultato della query); è possibile lavorare sul form1
senza aver chiuso il form2?
Mi spiego meglio: genero la query1 adesso e mi genera un risultato; a
me interessa che il form2 resti aperto però voglio chiudere il form1.
Poi, genero una query2 che mi viene visualizzata, però non voglio che
il form2 contenente la query1 si chiuda, devono restare aperti
entrambi...come faccio?
 
-- 
I'm using an evaluation license of nemo since 109 days.
You should really try it!
http://www.malcom-mac.com/nemo

 entrambi...come faccio?
Lascialo mezzo aperto :)
A parte gli scherzi, penso che il prog sia un poco incasinato, e forse se ci 
ri pensi potresti are tutto con Form1
La semplicità prima di tutto (che debba funzinare, e bene, si da per 
scontato)
-- 
Greg 

  A video usa una grliglia; su carta usa CR
ho provato a fare in questo modo ma mi da errore 424 "necessario
oggetto" sulla riga "set datagrid1.datasource = Rs"
Private Sub CInfo_Click()
 
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
 
Cn.CursorLocation = adUseClient
Cn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Documents
and Settings\Administrator\Desktop\Treno\treni.mdb"
Rs.Open "Select * from TRENI", Cn, adOpenStatic, adLockOptimistic
Rs.MoveFirst
 
Set DataGrid1.DataSource = Rs
 
 
End Sub


 oggetto" sulla riga "set datagrid1.datasource = Rs"
Io non conosco ADO, cerca in rete, oppure fai F1 sull'oggetto datagrid, per 
vedere come si collega la grid ad una fonte dati.
greg 

 datagrid, per vedere come si collega la grid ad una fonte dati.
il codice che ho usato l'ho trovato in rete; funziona, perchè alcuni
l'hanno utilizzato e non hanno avuto problemi...boh!


 l'hanno utilizzato e non hanno avuto problemi...boh!
...
Domanda stupida... ma sul form dove stai facendo girare questa istruzione, 
c'e' una DataGrid1?

 istruzione, c'e' una DataGrid1?
Mi vergogno di me stesso...stavo lavorando sul form sbagliato!
Domanda: ma perchè sul datagrid mi fa vedere tutto il db e non la
query che ho fatto?
 
-- 
I'm using an evaluation license of nemo since 110 days.


 query che ho fatto?
...
Sul pezzettino di codice che hai scritto prima, non mi pare ci siano query 
"selettive"

 query "selettive"
Private Sub CInfo_Click()
 
Dim Direttrice As String
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
 
Direttrice = CDirettrice
'MsgBox Direttrice
 
Cn.CursorLocation = adUseClient
Cn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Documents
and Settings\Administrator\Desktop\Treno\treni.mdb"
Rs.Open "Select * from TRENI WHERE DIRETTRICE = " & Str(Direttrice) &
"", Cn, adOpenStatic, adLockOptimisticRs.MoveFirst
 
 
Set DataGrid1.DataSource = Rs
L'errore è runtime-13, tipo non corrispondente.
Ciao & grazie.


 query "selettive"
no in quello no;
con quello stavo provando il datagrid, per vedere se facendo una
select * from table1 funzionasse;cosě funziona, ma se faccio where =
"..." no...
ecco il codice:
Private Sub CInfo_Click()
 
Dim Direttrice As String
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
 
Direttrice = CDirettrice
'MsgBox Direttrice
 
Cn.CursorLocation = adUseClient
Cn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Documents
and Settings\Administrator\Desktop\Treno\treni.mdb"
Rs.Open "Select * from TRENI WHERE DIRETTRICE = " & Str(Direttrice) &
"", Cn, adOpenStatic, adLockOptimisticRs.MoveFirst
 
 
Set DataGrid1.DataSource = Rs
 
End Sub


 "Select * from TRENI WHERE DIRETTRICE = '" & Str(Direttrice) & "'",
-- 
Greg 

 "", Cn, adOpenStatic, adLockOptimisticRs.MoveFirst
...
Un paio di cose...
La variabile direttrice, di che tipo e'?
Se e' un numerico, pre convertirlo in stringa, devi usare Cstr() e non 
Str().
Se il campo Direttrice e' numerico, quelle doppie virgole che metti al 
termine della query, sono solo dannose.
Se invece Il campo direttrice e' un testo, dovresti inserire gli apici prima 
e dopo la variabile direttrice, e cioe'
Rs.Open "Select * from TRENI WHERE DIRETTRICE ='" & Cstr(Direttrice) & "'" 
(ecc...)
Tieni presente che qui abbiamo assunto un campo Direttrice di tipo 
carattere, e una variabile Direttrice di tipo diverso da stringa (un 
numerico)
Immagino poi che scrivere Rs.MoveFirst subito dopo adLockOptimistic sia solo 
un errore di battitura nel post

 Str().
...
Tanto per sopiegare meglio il mio punto di vista...
In effetti Str() converte un numero (un long per l'esattezza) in una 
stringa, ma aggiunge uno spazio vuoto all'inizio se il numero e' positivo.
Nella query funzionano correttamente entrambe le soluzioni (cosi' come 
lasciare a VB una conversione implicita), ma se proprio mi devo scomodare a 
fare una conversione ^___^ , preferisco Cstr()

 Se e' un numerico, pre convertirlo in stringa, devi usare Cstr() e non Str().
Certo, si può usare CStr.
Ma se si usa CStr, che è localizzato, siccome la sintassi SQL è 
delocalizzata, occorre far passare la stringa in una ulteriore funzione 
che sostituisca il separatore decimale locale (che non necessariamente 
è la virgola o il punto), col punto.
A questo punto, tanto vale usare Str che almeno usa sempre il punto.
Anche se la variabile da convertire è un numerico senza decimali (come 
un long), il passaggio attraverso la funzione di sostituzione del 
separatore va fatto comunque, perchè non è impossibile che una 
variabile long possa poi essere dimensionata diversamente, ad esempio 
in Currency, e non è pensabile che ci si debba mettere lì a cercare 
tutti i punti del codice in cui questa variabile viene convertita. Una 
cosa fatta bene prevede che un numerico che diventa stringa passi 
sempre per la stessa funzione, e Str è una buona soluzione.
Alberto
-- 
La forza di volontà è guardare negli occhi una ragazza in topless.

 mi devo scomodare a fare una conversione ^___^ , preferisco Cstr()
Ciao,
rispondo qui ad entrambi;
Direttrice è di tipo String (bologna, milano ecc ecc);
ho provato con WHERE DIRETTRICE = '" & Str(Direttrice) & "'" ma mi da
sempre tipo non corrispondente...non capisco!
GRAZIE!



============================================

 solo direttrice.
Giusto :-(
Si vede che sono niubbo! :-)
Allora, ho provato con WHERE DIRETTRICE = 'Direttrice' ma non va, non
visualizza nulla sul DataGrid :-(


 GRAZIE!
Ciao, ok :
WHERE DIRETTRICE = '" & Direttrice & "'
Devi mettere il contenuto di direttrice altrimenti la quesry funziona 
solo se la direttrice è direttrice :-)


  WHERE DIRETTRICE = '" & Direttrice & "'
Funzionaaaaa!
Grazie 1000!


 Grazie 1000!
Benissimo!!
Di nulla è un piacere.


 Certo, si può usare CStr.
[...]
...
infatti come ho aggiunto dopo, preferisco usare Cstr() anziche' Str() per la 
questione di come viene restituita la stringa.
Str() restituisce anche uno spazio prima del numero nel caso in cui il 
numero passato sia positivo, e spesso questo da fastidio (ad esempio se devi 
costruire ilvalore di un campo come Nome & numero )
Se si ha ad esempio
Telefono1
Telefono2 ecc...
con Telefono & Cstr(numero)
si ha Telefono1
con Telefono & Str(numero)
Telefono 1
Ecco perche' mi trovo meglio a lavorare con Cstr().. e probabilmente perche' 
i miei software sono mooolto locali :-))

 i miei software sono mooolto locali :-))
Guarda che si stava componendo una stringa Sql.
Non esiste un Sql locale, è sempre delocalizzato...
Ciao
Alberto
-- 
Charles Baudelaire: C'è un solo modo di dimenticare il tempo: 
impiegarlo.


wrote:
ho un'altra domanda per gli esperti :-)
ho scritto una funzione che estrae un numero da un db e lo devo
incrementare di 1, com'è possibile che funzioni in un form, ed in un
altro form no?
 
-- 
I'm using an evaluation license of nemo since 110 days.


 altro form no?
Ciao Marco,
credo che sia più corretto aprire un nuovo post, e magari specificare 
meglio dettagliando un po di piu'.


In article <mn.3b047d78e...@email.invalid>
IsaCab<g.l...@email.invalid> wrote:
Ciao Giulio,
ho fatto un nuovo post; ti chiedo un'altra cosa;
l'avevo già chiesta sul NG, ho fatto come mi è stato suggerito ma non
funziona;
devo scrivere in un db;
prima di scrivere devo controllare esiste già un record con quella
chiave primaria.
faccio una select e sulla condizione WHERE cerco un record con la
stessa chiave primaria;
poi faccio:
if Rs.EOF
'scrivi
else
'record già inserito
end if
ma non va!


 end if
...
Intanto cerca di capire se 'e sbagliata la Query, o altro.
Vai a vedere, ad esempio, se dopo la query, la condizione Rs.EOF = True
Se effettivamente rs.EOF = True, e sei assolutamente sicuro che nella 
clausola Where hai passato una chiave esistente, probabilmente la query e' 
da rivedere.
Altrimenti prova a fare un debug passo passo e vedi dove ti crea l'impiccio