Newsgroup: it.comp.appl.access
Titolo: Split nel modulo

ciao a tutti
 
volendo usare    
If Me.OpenArgs > "" Then
strFrm = Split(Me.OpenArgs, "|")(0)
strCtl = Split(Me.OpenArgs, "|")(1)
ecc.
 
come devo fare?
 
grazie
 


ho risolto con
  strCtl = 
Screen.ActiveControl.Name
 
  strText = frm(strCtl).Text


è corretto fare
 
  Dim strCtl As String
  Dim strText, strFind
 
  strCtl = 
Screen.ActiveControl.Name
 
  strText = frm(strCtl).Text
  If Not Nz(frm(strCtl).Column(1), 0) _
    <> strText Then Exit Sub
 
oppure:
Dim strCtl As Control
Dim strText, strFind
 
Set strCtl = 
Screen.ActiveControl.Name
 
strText = frm(strCtl).Text
If Not Nz(frm(strCtl).Column(1), 0) _
  <> strText Then Exit Sub
 
grazie

1 Questo è sbagliato:
 
  Dim strText, strFind 
 
2 Questo è sbagliato:
 
  Dim strText, strFind As String
 
3 Questo è giusto:
 
  Dim strText As String, strFind As String
 
4 Questo è giusto:
 
  Dim strText As String
  Dim strFind As String
 
 
La prima dichiarazione non definisce il DataType e di fatto diventano VARIANT non string.
La seconda definisce solo la 2° variabile ma la prima rimane VARIANT...
 
Per l'uso del SET direi che dovrebbe esserti chiaro che si usa con l'assegnazione di OGGETTI... quindi questo è SBAGLIATO:
 
    Set strCtl = 
Screen.ActiveControl.Name
 
 
Ma concettualmente anche questa è una cosa inutile:
 
  strText = frm(strCtl).Text 
 
Dal momento che hai il riferimento al controllo attivo cosa ti frega andare a puntare all'indice esplicito della collection IMPLICITA controls...?
 
Se invece di quello che scrivi, cioè questo:
  strCtl = 
Screen.ActiveControl.Name
 
  strText = frm(strCtl).Text 
 
tu scrivessi:
 
  strText = Screen.ActiveControl.Text 
 
Pensi non possa essere la stessa cosa...?
 
Franco.... rifletti...!
 
@Alex


grazie Alex
se faccio
strText = Screen.ActiveControl.Text
poi ho.........
frm(strCtl).Column(1) dove strCtl è il nome del controllo
quindi come è meglio fare?
 
  If Not Nz(frm(strCtl).Column(1), 0) _
    <> strText Then Exit Sub
 
  strFind = "TraspVarie Like '"
  strFind = strFind & "*" & Replace(strText, "'", "''") & "*"
  strFind = strFind & "'"
 
  strSql = vbNullString
  strSql = strSql & "SELECT "
  strSql = strSql & "IDTraspVarie, "
  strSql = strSql & "TraspVarie AS Trasp, "
  strSql = strSql & "IndirizzoTraspVarie AS Indirizzo, "
  strSql = strSql & "CAPTraspVarie + ' ' & CittàTraspVarie AS Città, "
  strSql = strSql & "TelefonoTraspVarie AS Telefono, "
  strSql = strSql & "FaxTraspVarie AS Fax, "
  strSql = strSql & "CellulareTraspVarie AS Cellulare "
  strSql = strSql & "FROM TbTraspVarie "
  strSql = strSql & "Where " & strFind
  strSql = strSql & "ORDER BY TraspVarie"
 
  frm(strCtl).RowSource = strSql
  frm(strCtl).Dropdown

Franco mi pare tu non capisca cosa stai facendo.
 
Se ti è chiaro che il riferimento al controllo non richiede il passaggio per la Collection Controls di Form... cosa altro ti serve per CAPIRE...?
 
L'unica cosa è che se lo usi più volte puoi dichiararlo così:
 
Dim actCTL as Access.Control
Set actCTL = Screen.ActiveControl
 
Quindi:
With actCTL
    If Not Nz(.Column(1), 0) <> strText Then Exit Sub
    .....
    .RowSource = strSql
    .Dropdown 
End With
 
@Alex


grazie Alex
ho dovuto aggiungere .......
Set actCTL = Screen.ActiveControl
StrText = actCTL.Text
With frm(actCTL.Name)

 With frm(actCTL.Name)
 
Franco mi hai fiaccato, fai quello che vuoi...! 
 
ma che cavolo serve:
 
 With frm(actCTL.Name)
 
Perchè devi scrivere quel pastrocchio se questo è sufficiente...?
 
 With actCTL
 
Ti rendi conto che, nonostante i suggerimenti fai quello che vuoi senza BUONSENSO...?
 
Posso chiedermi, ma poi devo anche darmi risposta, a cosa servono i suggerimenti se poi non li segui o non li capisci...?
 
@Alex


A parte le spiegazioni ed i /cazziatoni/ di @Alex
ammettendo che hai 20 valori separati da "|":
 
arrayVal=Split(Me.OpenArgs, "|")
 
ed in arrayVal(indice) a partire da 0 hai *tutti*
e 20 i valori passati
 
Nel tuo caso, immagino che
arrayVal(0)=nomeform
arrayVal(1)=nome controllo
-- 
ac (x=y-1)
Aborro il Killfile
(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)


ciao Alex
With actCTL <--- cosi mi restituisce un numero e non il nome del controllo
 

 With actCTL <--- cosi mi restituisce un numero e non il nome del controllo
 
Ma nemmeno per sogno... quello è un OGGETTO, se hai fatto come ti ho detto.
 
 
@Alex


ciao Alex 
questo è l'intero codice, ma cosi non funziona
 
Public Sub TrovaTrasp(frm As Form)
 
  Dim actCTL As Access.Control
  Dim strText As String, strFind As String
  Dim strSql As String
 
  Set actCTL = Screen.ActiveControl
  'strText = actCTL.Text
 
  'With frm(actCTL.Name)
 
  With actCTL <---qui mi restituisce un numero
    If Not Nz(.Column(1), 0) <> strText Then Exit Sub
 
    strFind = "TraspVarie Like '"
    strFind = strFind & "*" & Replace(strText, "'", "''") & "*"
    strFind = strFind & "'"
 
    strSql = vbNullString
    strSql = strSql & "SELECT "
    strSql = strSql & "IDTraspVarie, "
    strSql = strSql & "TraspVarie AS Trasp, "
    strSql = strSql & "IndirizzoTraspVarie AS Indirizzo, "
    strSql = strSql & "CAPTraspVarie + ' ' & CittàTraspVarie AS Città, "
    strSql = strSql & "TelefonoTraspVarie AS Telefono, "
    strSql = strSql & "FaxTraspVarie AS Fax, "
    strSql = strSql & "CellulareTraspVarie AS Cellulare "
    strSql = strSql & "FROM TbTraspVarie "
    strSql = strSql & "Where " & strFind
    strSql = strSql & "ORDER BY TraspVarie"
 
    .RowSource = strSql
    .Dropdown
 
  End With
 
End Sub


boh..............
ora invece funziona
avevi ragione tu
;-(

Non avevo ragione io... quella è così perché lo dice il VBA e la programmazione ad oggetti di Access... eri tu che avevi torto e non ti sforzi di ragionare...!
Per il resto a me cambia poco... mi piacerebbe solo vedere che i suggerimenti portano a migliorare... è quando vedo il contrario che mi accendo...
 
Saluti
@Alex


 
Facevi la lampadina nel famoso gioco di intrattenimento (mai visto)?
;-)


L'allegro chirurgo..?
Ma quanto ci ho giocato... ;-)
 
@Alex