Newsgroup: it.comp.appl.access
Titolo: Recordset

Ho un grosso problema:
E' possibile connettersi ad una tabella di un  db e vedere quanti record
contengono i caratteri inseriti in un controllo non associato di una
maschera utilizzando Like ecc:
Grazie a tutti

"Marina F." <1@l1> ha scritto nel messaggio
news:GSO79.73768$n04.2...@twister2.libero.it...

Ciao, Marina
la  domanda non č chiara. Un controllo non associato č per definizione
slegato da un campo di una tabella.
E poi cosa significa "quanti record contengono i caratteri", non ha senso, i
caratteri non contengono record.
Puoi essere piů chiara su cosa vuoi ottenere?
Ciao, Carlo

 maschera utilizzando Like ecc:
    Supponiamo che il controllo non associato sia una Casella di testo di
nome "Testo1" posta su una maschera di nome "Maschera1" su cui esista anche
un Pulsante di comando di nome "Comando1". Poniamo anche che la ricerca sia
da effettuare nella tabella "Clienti" del database "Northwind.mdb": resta da
decidere se effettuare la ricerca su un dato campo di tale tabella o su
tutti i campi. Spero che tu desideri farlo su un solo campo... ;-)
Ipotizziamo che tale campo sia "NomeSocietà". In questo caso potrebbe essere
sufficiente del codice tipo il seguente:
Option Compare Database: Option Explicit
Private Sub Comando1_Click()
  On Error GoTo erh
  Dim sText       As String
  Dim sDomain     As String
  Dim sFieldName  As String
  Dim sExpr       As String
  Dim sCriteria   As String
  Dim lCount      As Long
  Dim sTitle      As String
  Dim sPrompt     As String
  Dim lButtons    As VBA.VbMsgBoxStyle
  sText = "" & Me.Testo1.Value
  If (Len(sText) = 0) Then
    Beep
  Else
    sDomain = "Clienti"
    sFieldName = "NomeSocietà"
    sExpr = "*"
    sCriteria _
      = "[" & sFieldName & "] Like " _
      & Chr$(34) & "*" & sText & "*" & Chr$(34)
    lCount = DCount(sExpr, sDomain, sCriteria)
    sTitle = "Ricerca - Campo: " & sFieldName
    sPrompt = "«" & sText & "»"
    If (lCount = 0) Then
      lButtons = vbExclamation
      sPrompt _
        = "Nessun record contiene la stringa" _
        & " " & sPrompt & "."
    Else
      lButtons = vbInformation
      sPrompt _
        = "Numero delle occorrenze di" _
        & " " & sPrompt & ":" _
        & " " & Format$(lCount, "0") & "."
    End If
    lButtons = lButtons + vbOKOnly
    MsgBox sPrompt, lButtons, sTitle
  End If
ext:
  Exit Sub
erh:
  With Err
    MsgBox .Description, vbCritical + vbOKOnly
  End With
  Resume ext
End Sub
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 Grazie Maurizio credo che l'infarinatura sia giusta ora ci provo.


Ok. Maurizio funziona perfettamente ma se quì volessi inserire un AND  per
una ricerca su un altro campo della stessa tabella legato ad una altro
controllo della maschera come diventerebbe questa stringa?
C'è una logica nell'inserire i semplici apici, i doppi apici o Chr$(34) ?
Perchè in un criterio di ricerca, sempre a rigurdo degli apici una variabile
va trattata diversamente rispetto ad un riferimeto di un controllo?
Vedi:
 sFieldName
oppure
Me.RagioneSociale
Se hai cinque minuti per queste spiegazioni te ne sono grata ma ti ringrazio
comunque per la tua gentilezza.
Ciao Marina

 Me.RagioneSociale
[...]
    Prima di tutto secondo me non e' bene scrivere:
        Me.RagioneSociale
e basta, approfittando cioe' dell'esistenza di una proprieta' di default.
"Value", in questo caso. Ma e' opportuno esplicitare cosa si vuol fare del
controllo: ottenerne il valore? Allora:
        Me.RagioneSociale.Value
Questo perche' l'intorpidimento derivante dall'uso delle proprieta' di
default ci fa perdere coscienza della loro esistenza di modo che la volta
che avremo a che fare con un controllo che, o non ha una proprieta' di
default, o ne ha una diversa da quella che ci aspetteremmo, non saremo in
grado di rilevare immediatamente il problema.
    Considera anche che, grazie all'Intellisense, questa apparente
ridondanza non ci costa nessunissima fatica e dopo poco diventa un riflesso
condizionato digitare sempre quel punto. Tra l'altro... quante cose si
scoprono, o si riscoprono, in quella lista!
    Prima di tutto, dicevo... Poi mi sono perso. In realta', pero', temo di
non aver ben compreso la domanda: riguardo agli apici... variabile...
controllo... trattamento diverso... No, non capisco. Direi che non c'e'
nessun trattamento diverso. La sintassi e' sempre:
    <Nome del campo> <Operatore di confronto> <Valore>
dove <Nome del campo>, se non sbaglio, deve essere obbligatoriamente
racchiuso fra parentesi quadre. Ma sarebbe bene farlo comunque, anche se non
fosse obbligatorio, per evitare il rischio di errore nel caso che il nome
del campo sia una parola riservata.
    Riguardo <Operatore di confronto> sai gia' tutto: = <> > < >= <= Like
...
    <Valore> sara' invece:
    <Valore>, nel caso dei dati di tipo numerico, facendo attenzione ad
arrivare alla composizione di questa stringa con <Valore> non rappresentato
da una variabile di tipo numerico ma String, nel formato americano;
    Chr$(34) & <Valore> & Chr$(34), nel caso dei dati di tipo stringa;
    "#" & <Valore> & "#", nel caso dei dati di tipo Data/ora, facendo
attenzione ad arrivare alla composizione di questa stringa con <Valore> non
rappresentato da una variabile di tipo Date ma String, nel formato richiesto
dal database: generalmente mm/dd/yyyy oppure yyyymmdd o, perche' no, Double
invece che String, nel qual caso la sintassi sara' la stessa dei dati di
tipo numerico.


 ha scritto nel messaggio
news:ajv73q$1e68ss$2...@ID-52090.news.dfncis.de...
Grazie Maurizio i tuoi chiarimenti valvgono come minimo 50 pagine di manuale
Sei grande.
Ciao Marina

 Grazie Maurizio
[...]
    :-)
