Newsgroup: it.comp.lang.visual-basic
Titolo: Cosa significa questo select...

Non riesco a capire questo comando:
rs.Open "SELECT * FROM Bilancio WHERE Pippo = " & CInt(s(0)), cn, 1
Cioč
SELECT -  e va bene;
* - tutti i campli della tabella
FROM - e va bene;
Bilancio - nome della tabella a cui accedo;
WHERE - indica il criterio di scelta che č Pippo = " & CInt(s(0)), cn, 1.
Cosa significherebbe " & CInt(s(0)), cn, 1.?
Grazie dell'aiuto

 WHERE - indica il criterio di scelta che è Pippo = " & CInt(s(0)), cn, 1.


 costanti quando esiste una enumerazione di ADO)
allora non capisco questo parte di codice:
************************************
    s = Split(cmbSeleziona.Text, " ")
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
 APRO LA CONNESSIONE E LANCIO LA QUERY PER RECUPERARE IL RECORD SELEZIONATO
    cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\database.mdb"
    rs.Open "SELECT * FROM Bilancio WHERE Pippo = " & CInt(s(0)), cn, 1
 RIEMPIO I CAMPI CON I VALORI ESTRATTI DAL DATABASE
    txtNome.Text = rs("Pippo").Value
    txtCognome.Text = rs("Paperino").Value
    txtIndirizzo.Text = rs("Pluto").Value
    txtTelefono.Text = rs("Paperone").Value
    rs.Close
    cn.Close
******************************
Tutto funzionava finchè "Pippo" era un numero progressivo, nel momento in
cui Pippo non è più un numero progressivo, non riesco più ad estrarre le
righe che compongono la tabella... come mai?
(Lo so' già che sono un visual-basic-newbie ignorante ma ci sto sbattendo la
testa da almeno 3-4 ore...)
Grazie per l'aiuto

 righe che compongono la tabella... come mai?
E cos'è adesso Pippo?
E cosa c'è in s(0)
E la stringa di selezione cosa vale?
E hai un errore o semplicemente non ottieni nessuna riga?
E se hai un errore che errore è?
E su che linea di codice?
Ciao
--
Reporting tool: 
http://www.neodatatype.net

 E se hai un errore che errore è?
Non ho un errore, semplicemente, visualizzo i dati correttamente in una
combobox caricata con
Private Sub Form_Load()
  Set cn = New ADODB.Connection
  Set rs = New ADODB.Recordset
  cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\database.mdb"
  rs.Open "SELECT Pippo, Pluto, Paperino FROM Bilancio ORDER BY Pippo ASC",
cn, 1
 cmbSeleziona.AddItem ("")
  ' ESTRAGGO I DATI CHE MI INTERESSANO DALLA TABELLA E LI INSERISCO NELLA
COMBO BOX
  While rs.EOF = False
    cmbSeleziona.AddItem (rs("Pippo").Value & " - " & rs("Pluto").Value & "
" & rs("Paperino").Value)
    rs.MoveNext
  Wend
  rs.Close
  cn.Close
End Sub
Ma poi una volta selezionata la riga che mi interessa, cliccando su un
button ok che contiente il codice postato nel precedente post,
non ho corrispondenza tra la riga selezionata ed i campi che vengono
riempiti con
   txtNome.Text = rs("Pippo").Value
    txtCognome.Text = rs("Paperino").Value
    txtIndirizzo.Text = rs("Pluto").Value
    txtTelefono.Text = rs("Paperone").Value
Spero d'aver reso l'idea

Giusto l'altro ieri ho rampognato uno dei miei perchè ha utilizzato appunto 
"pippo" su esempi che dovevano andare in mano al cliente che nella migliore 
ipotesi coglierà l'occasione quando avrà qualche cosa da ridire.
Gli esempi con pippo, pluto e paperino vanno bene solo a squola (scritta con 
la q).
Vedo inoltre che nonostante tu abbia scopiazzato un pezzo di programma 
chissà dove pretendi che funzioni senza averlo mai analizzato 
minuziosamente.
Ti invito pertanto quanto prima a leggerti tutto il tuo programma, 
analizzarlo con il debugger o con quello che meglio ti pare, verificarne 
tutti i passaggi, comprendere cosa fa.
Poi torna qui, se NON farai esempi con pippo pluto e paperino ti aiuterò 
volentieri.


 ha scritto nel messaggio
news:432b1540$0$8486$5fc...@news.tiscali.it...
[snip]
Non capisco cosa c'entri tutto questo con la select che ti da problemi
(oltre a non capire il senso di
cmbSeleziona.AddItem (rs("Pippo").Value & " - " & rs("Pluto").Value & "
" & rs("Paperino").Value)
)
Tra l'altro se Pippo contiene nomi (cioè stringhe) la select incriminata va
secca in errore perchè richiederebbe le virgolette nella where, quindi oltre
a non aver risposto alle mie domande c'è qualcos'altro che non ci hai detto.


 verificarne tutti i passaggi, comprendere cosa fa.
Come detto sopra, è quello che sto facendo. Ti ringrazio comunque per la
disponibilità. Ciao

 righe che compongono la tabella... come mai?
se pippo non č piů un numero progressivo ma una stringa allora:
rs.Open "SELECT * FROM Bilancio WHERE Pippo = " & CInt(s(0)), cn, 1
diventa:
rs.Open "SELECT * FROM Bilancio WHERE Pippo ='" s(0) & "'", cn, 1 

ERRATA CORRIGE
...
...
diventa:
rs.Open "SELECT * FROM Bilancio WHERE Pippo ='" & s(0) & "'", cn, 1


Così mi rimanda in degug a questa linea e mi da errore "il driver ODBC non
supporta le proprietà richiesta.
Ribadisco che se rimetto il nome del campo che contiene un numero
progressivo tutto funziona.
Se hai anche solo un link dove poter studiare te ne ringrazio.
Grazie dell'aiuto

Nel database quel campo "Pippo" è di tipo numerico, quindi la query deve
per forza di cose essere del tipo:
SELECT elencocampi
FROM tuatabella
WHERE Pippo = numero
Non puoi mettere:
WHERE Pippo = 'numero'
perchè questa sintassi va bene solo nel caso in cui il campo Pippo del
database sia di tipo testo.
Siccome Pippo nel DB è un campo numerico, devi per forza scrivere una
query senza le virgolette per valorizzare quel campo, e ovviamente devi
dargli un numero.
Altrimenti:
1 - Il database si incazza e ti dice che stai sbagliando;
2 - Quando mai troverai il record cercato se lui vuole un numero e tu
gli dài una stringa?
-- 
Quando noi ignoranti eravamo di più, tutto era più bello...
(A. Celentano)
Per rispondermi in privato, prima togli l'immondizia dalla testa ;)

 cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\database.mdb"
in quanto io sapevo che con gli oggetti ADO la proprietà della connessione
si chiamava Provider, e andava usata una cosa del genere:
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\database.mdb", ma
naturalmente non si finisce mai di imparare e se nessun guru si orripila
significa che mi dovrò documentare.
Spero di esserti stato utile. Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 conversione non riesce quando il campo contiene la stringa "Giorgio",
Ok, fin qui c'ero e per la cronaca il tutorial è questo:
http://www.mrwebmaster.it/tutorial/vb/tutorial415.htm
Io ho solo cercato di modificarlo, per capirne i funzionamento proprio nel
punto dove ora ho problemi,
ed ho sostituito il campo con l'id progressivo con un altro campo "nomi".
Ora modificando la riga che originariamente era
rs.Open "SELECT * FROM Bilancio WHERE id = " & CInt(s(0)), cn, 1  con
rs.Open "SELECT * FROM Bilancio WHERE nomi = " & CInt(s(0)), cn, 1
la cosa non va più, o meglio mi restituisce sempre gli stessi valori.
Allo stato delle cose, ho capito perchè non funziona ma devo ancora arrivare
a capire "come" farlo funzionare con la modifica che ho apportato.
Grazie dell'aiuto a te ed agli altri.