Ciao.
Devo controllare l'esistenza di una stringa all'interno di altre stinghe separate fra loro(n righe) in VB6.
Questo, lo devo fare per ogni righa, fasciendo un Loop, in vb.
Grazie 1000.
Ciao.
Devo controllare l'esistenza di una stringa all'interno di altre stinghe separate fra loro(n righe) in VB6.
Questo, lo devo fare per ogni righa, fasciendo un Loop, in vb.
Grazie 1000.
la funzione instr ti dice se una stringa esiste all'interno di un'altra
Scusate i puntini di sospensione...... La verità è che non ho argomenti....
ciao
la stringa cercata po essere uguale o piccola della strigha in cui vado a cercare.
io ho fatto una cosa del genere po andare bene?
For i=0 To UBound()
n=0
If UCase$(Descrizione_Bom(i))<>"" Then
Do Until "Descrizione_Text1(n)" Like "*Descrizione_Bom(i)*"
Codice_Bom(i) = Codice_Text1(n)
n = n + 1
Lopp
Grazie
no, da quello che vedo mancano le basi....
Non si capisce quello che devi fare.....![]()
Scusate i puntini di sospensione...... La verità è che non ho argomenti....
Ciao
il file dove vado a cercare la stringa é fatto cosi:
70781312;INTEGRATO EEPROM 8KX8 24C64 ;00001,2163
70782153;BC846 Transistor NPN SOT-23 ;00000,0090
70782154;TRANSISTOR BC856B BOX SMD SOT23 ;00000,0090
la stringa cercata é fatta cosi:
bc864 tansistor bc box smd sot23
Allora devo cercare la stringa e quando lo trovo scrivo il suo codice:70782154.
Grazie
Ciao !Originariamente inviato da moussa
ciao
la stringa cercata po essere uguale o piccola della strigha in cui vado a cercare.
io ho fatto una cosa del genere po andare bene?
For i=0 To UBound()
n=0
If UCase$(Descrizione_Bom(i))<>"" Then
Do Until "Descrizione_Text1(n)" Like "*Descrizione_Bom(i)*"
Codice_Bom(i) = Codice_Text1(n)
n = n + 1
Lopp
Grazie
Cosi' non funziona, per una serie di motivi, il principale dei quali e' che scrivi il NOME della variabile DENTRO la stringa letterale cercata con LIKE...
Non va, eventualmente sarebbe: ... Like "*" & Descrizione_Bom(i) & "*".
Poi fai un po' di confusione con gli indici (i, n)... oltretutto se cerchi UNA descrizione la variabile Descrizione_Text1(i) non dovrebbe essere un vettore...
Prova cosi':
Sarebbe una buona idea inglobare il codice in una funzione apposita, per rendere il tutto un po' piu' strutturato...codice:Codice="" If Descrizione_Bom<>"" Then For i=0 To UBound(Descrizione_Text1) If Ucase$(Descrizione_Text1(i)) Like ("*" & Descrizione_Bom & "*") Then Codice = Left$(Descrizione_Text1(i), Instr(Descrizione_Text1(i), ";") -1) Exit For End If Next End if
IceCube_HT (VB6 fan Club)
Ciao e grazie per la risposta.
Ho provato a adattare il tuo codice al mio, ma nn va, comunque la descrizione è un vettore ecco perche ho fatto un loop di "i" e uno di "n", perche la descrizione è un vettore e ci sono tanti righe.
For i=0 To Puntatore_campi_Bom-1
n=0
If UCasae$(Descrizione_Bom(i))<>"" Then
If Ucase$(Descrizione_Text1(n)) Like ("*" & Descrizione_Bom(i) & "*") Then
Codice = Codice_Text1(n) 'assegnare il codice i del Text1 della n-esima riga alla riga i- ' esima del Bom
Exit For
End If
Next
End if
mi lo controlli perfavore.
Grazie
Allora devi fare due cicli For, uno dentro all'altro...Originariamente inviato da moussa
Ho provato a adattare il tuo codice al mio, ma nn va, comunque la descrizione è un vettore ecco perche ho fatto un loop di "i" e uno di "n", perche la descrizione è un vettore e ci sono tanti righe.
Pero', prima, dimmi se ho capito bene la situazione, senno' andremo avanti all'infinito![]()
1) Hai un certo numero di righe, formattate come segue:
70782154;TRANSISTOR BC856B BOX SMD SOT23 ;00000,0090
memorizzate sotto forma di vettore di nome Descrizione_Text1()
2) Hai delle descrizioni di componenti, tipo:
TRANSISTOR BC856B BOX SMD SOT23
memorizzate come vettore di nome Descrizione_Bom()
3) Vuoi cercare nel vettore Descrizione_Text1() la presenza di Descrizione_Bom() ed estrarne il codice corrispondente, che si trovera' all'inizio di Descrizione_Text1() separato dal resto della riga da un punto e virgola.
4) Vuoi ripetere il procedimento per tutte le descrizioni dei componenti (e quindi avrai bisogno anche di un VETTORE di codici, delle stesse dimensioni di Descrizione_Bom(), dove memorizzare il codice di ciascun componente.
E' questa la situazione che ti si presenta ?
In questo caso:
Ovviamente PRIMA di questo devi aver dichiarato da qualche parte il vettore dei codici con qualcosa come:codice:Dim i As Integer, j As Integer For j = 0 To UBound(Descrizione_Bom) If Descrizione_Bom(j) <> "" Then For i = 0 To UBound(Descrizione_Text1) If UCase$(Descrizione_Text1(i)) Like ("*" & UCase$(Descrizione_Bom(j)) & "*") Then 'il codice e' la parte sinistra della riga, fino al carattere precedente il ';' Codice(j) = Left$(Descrizione_Text1(i), InStr(Descrizione_Text1(i), ";") - 1) Exit For 'trovato il codice, esce dal ciclo interno End If Next End If Next
codice:Dim Codici(UBound(Descrizione_Bom)) As String
IceCube_HT (VB6 fan Club)
Ciao
Bravissimo è quello che cerco di fare.
grazie
Pero' se controlli il codice che hai proposto per ultimo, vedrai che NON hai fatto DUE loop, ma ne hai lasciato UNO SOLO, usando DUE indici !!!!???Originariamente inviato da moussa
Ciao
Bravissimo è quello che cerco di fare.
grazieVVoVe:
Poi: "me lo controlli ?", posso anche farlo, ma che ne dici di far lavorare prima le "macchine" ?
(Il codice che hai proposto non e' passato per il compilatore, vero ?)
![]()
IceCube_HT (VB6 fan Club)