napisał: grzegorz2989 postów: 6
umieszczony: 4 września 2012 21:50
|
|
Tak wyglada teraz i jest OK. Wczytuje jedną komórkę, później drugą itd. Jedyne co, muszę dopisać parę linijek aby jednak skonwertować plika Data na system
Dana,Dana1a,Dana1b
Dana2,Dana2a,Dana2b
W poprzednim układzie pliku Data.txt, potrafił się zapętlić jeśli odstęp pomiędzy danymi był większy niż jeden <ENTER>
Private Sub Form_Load() '--->hmm nie wiem czym się różni od Form_Initialize. W obu przypadkach jest i działa w taki sam sposób
Dim sciezka As String, kolekcja As New Collection, i As Integer
Dim Dana1, Dana2, Dana3, Dana4
sciezka = "Data.txt"
Open sciezka For Input As #1
While Not EOF(1)
Input #1, Dana1, Dana2, Dana3
On Error Resume Next
kolekcja.Add CStr(Dana1), Dana1 'dla uzyskania unikatów
On Error GoTo 0
Wend
Close #1
For i = 1 To kolekcja.Count
Combo1.AddItem kolekcja(i)
Next i
End Sub
Private Sub Combo1_Click()
Dim sciezka As String, kolekcja As New Collection, i As Integer
Dim Dana1, Dana2, Dana3, Dana4
Combo2.Clear
Combo3.Clear
sciezka = "Data.txt"
Open sciezka For Input As #1
While Not EOF(1)
Input #1, Dana1, Dana2, Dana3
On Error Resume Next
If Dana1 = Combo1.Text Then kolekcja.Add CStr(Dana2), Dana2 'dla uzyskania unikatów
On Error GoTo 0
Wend
Close #1
For i = 1 To kolekcja.Count
Combo2.AddItem kolekcja(i)
Next i
End Sub
Private Sub Combo2_Click()
Dim sciezka As String
Dim Dana1, Dana2, Dana3, Dana4
Combo3.Clear
sciezka = "Data.txt"
Open sciezka For Input As #1
While Not EOF(1)
Input #1, Dana1, Dana2, Dana3
If Dana1 = Combo1.Text And Dana2 = Combo2.Text Then Combo3.AddItem Dana3
Wend
Close #1
End Sub
Jeszcze raz z góry dziękuję. Filtr dodam jako kolejnego Combo, jako na przykład Dana4 i pewnie również zadziała podobnie (mam nadzieję:)). Zobaczę i jeśli komuś się przyda-oczywiście wkleję cały kod. Pozdrawiam i dziiękuję jeszcze raz za pomoc |
|
napisał: grzegorz2989 postów: 6
umieszczony: 4 września 2012 20:21
|
|
Oki,
Dzięęęęki wielkie. Postaram się dzisiaj jeszcze napisać. Faktycznie muszę chyba coś pozmieniać-wkleiłem cały kod i nie bardzo coś wpisalo do boxów:P
Popatrzę dlaczego, pozmieniam i wstawię pełny kod jeśli uda mi się ustalić aby działało. Już wstępnie widziałem, że w programie są ComboBox1... a u mnie Combo1 itp.
Póki co Pozdrawiam i jeszcze raz dziękuję |
|
napisał: Trebor postów: 1209
umieszczony: 4 września 2012 18:19
|
|
Jeśli plik tekstowy ma pozostać taki jak chcesz to dodaj na końcu dwa entery.
Trafiłeś na forum VBA więc pewnie będziesz musiał coś tam przerobić:
Private Sub UserForm_Initialize()
Dim sciezka As String, kolekcja As New Collection, i As Integer
Dim Dana1, Dana2, Dana3, Dana4
sciezka = "C:\Documents and Settings\Admin\Pulpit\data.txt"
Open sciezka For Input As #1
Do While Not EOF(1)
Input #1, Dana1, Dana2, Dana3, Dana4
On Error Resume Next
kolekcja.Add CStr(Dana1), Dana1 'dla uzyskania unikatów
On Error GoTo 0
Loop
Close #1
For i = 1 To kolekcja.Count
ComboBox1.AddItem kolekcja(i)
Next i
End Sub
Private Sub ComboBox1_Click()
Dim sciezka As String, kolekcja As New Collection, i As Integer
Dim Dana1, Dana2, Dana3, Dana4
ComboBox2.Clear
ComboBox3.Clear
sciezka = "C:\Documents and Settings\Admin\Pulpit\data.txt"
Open sciezka For Input As #1
Do While Not EOF(1)
Input #1, Dana1, Dana2, Dana3, Dana4
On Error Resume Next
If Dana1 = ComboBox1.Value Then kolekcja.Add CStr(Dana2), Dana2 'dla uzyskania unikatów
On Error GoTo 0
Loop
Close #1
For i = 1 To kolekcja.Count
ComboBox2.AddItem kolekcja(i)
Next i
End Sub
Private Sub ComboBox2_Click()
Dim sciezka As String
Dim Dana1, Dana2, Dana3, Dana4
ComboBox3.Clear
sciezka = "C:\Documents and Settings\Admin\Pulpit\data.txt"
Open sciezka For Input As #1
Do While Not EOF(1)
Input #1, Dana1, Dana2, Dana3, Dana4
If Dana1 = ComboBox1.Value And Dana2 = ComboBox2.Value Then ComboBox3.AddItem Dana3
Loop
Close #1
End Sub |
|
napisał: grzegorz2989 postów: 6
umieszczony: 4 września 2012 17:27
|
|
W sumie, mógłbym zawsze odczytać i tymczasowo, powiedzmy dodać coś w stylu konwertera, czyli aby odczytał all do textboxa i zapisał inputem ze średnikami jeśli dobrze myślę. po wykorzystaniu lub zamknięciu programu TEMP-a by kasował. Skoro to by było prostsze później w obróbce, może to i lepiej? |
|
napisał: grzegorz2989 postów: 6
umieszczony: 4 września 2012 17:24
|
|
plik tekstowy tworzę sam. z danymi czyli pasek itp... tworzę sam, czyli korzystam już z utworzonego, nie mogę go zmienić, dlatego wygląda on tak jak wcześniej opisałem:
Dana
Dana
Dana
<ENTER>
Dana
Dana
Dana
<ENTER>
...
Stąd też pomyślałem o split ABY szukał do pustego miejsca, tylko nawet jeśli wczyta mi pierwsze trzy linijki do boxów, to za chiny nie potrafię zrobić aby wczytywał niezależnie, a o filtrze...już nie wspomnę |
|
napisał: Trebor postów: 1209
umieszczony: 4 września 2012 17:10
|
|
Czy plik tekstowy tworzysz sam czy też jest on wynikiem działania innego programu?
Jeśli tworzysz sam proponuje trochę inny układ, moim zdaniem łatwiejszy do odczytywania:
Pasek;Zębaty;20mm
Pasek;Zębaty;30mm
Pasek;Klinowy;15mm
Pasek;Zebaty;25mm
Opaska;Zaciskowa;Fi20
Opaska;Zaciskowa;Plastik
Pasek;Klinowy;35mm |
|
napisał: grzegorz2989 postów: 6
umieszczony: 4 września 2012 16:53
|
|
Witam
Moj plik Data.txt:
Pasek
Zębaty
20mm
Pasek
Zębaty
30mm
Pasek
Klinowy
15mm
Pasek
Zebaty
25mm
Opaska
Zaciskowa
Fi20
Opaska
Zaciskowa
Plastik
Pasek
Klinowy
35mm
Tak faktycznie- trzy pierwssze comboboxy chciałbym aby ładowały się tak, że pierwsza linijka (np:Pasek) to slowo klucz w pierwszy combo. Po tym wyborze otwiera się drugi gdzie możliwy jest wybór dla niego (klinowy/zębaty) i tak kolejny trzeci combo (z wymiarami).
Do okna w textboxie wpisuję notatkę i to wszystko zapisuje się do jakiegoś pliku txt (z zapisem nie mam problemów). Generalnie czwarty combobox służyłby po to aby po kliknięciu "wczytaj", wczytywał notatkę z wybranych maszyn, ale w nim mam wpisane już nie z pliku tylko w VB stałą listę słów jak zamówiono/dozamówienia itp. i dzialal by jako filtr, czyli wczytywałby do textboxa tylko dane dotyczące części zaznaczonej w trzech poprzednich comboxach , jednak z uwzględnieniem tego co w nim zaznaczymy. Nie wiem czy jasno potrafię opisać, jednak przykłądowo, mając już kilka wpisów (już jakąś stworzoną bazę txt odnośnie powyższego), wybieram w 4 combo na przykład "zamówiono" i do textboxa wpisze mi tylko wpisy odnosnie cześci, ze słowem "zamówiono". Pomogłoby mi to chociażby zobaczyć jak często zuzywa się/zamawiam. Przyznam, że jest mi to po jedno potrzebne prywatnie, po drugie, staram się nauczyć vb, jednak..pracując nie jest to również zbyt prostę, więc uczę się częściowo dzięki analizie kodów.
Tak czy inaczej z góry dziękuję jeśli uda mi się pomóc i Pozdrawiam |
|
napisał: Trebor postów: 1209
umieszczony: 4 września 2012 16:22
|
|
Wklej przynajmniej Twój kod odczytujący dane z pliku tekstowego.
Jeszcze lepiej plik tekstowy i ten z comboboksami. |
|
napisał: admin postów: 613
umieszczony: 4 września 2012 16:22
|
|
Cytat: Witam.
Mam problem z odczytaniem danych z pliku txt i wpisaniu ich do comboboxów. Plik textowy wygląda jak poniżej:
DANA1
DANA1A
DANA1B
DANA100
DANA100A
DANA100B
Używając SPLIT, wczytuje mi dane do rozdziału ENTEREM, jednak chodzi mi o to, iż jak wybiorę np: w comboboxie DANA1, to chciałbym aby program wczytał mi do drugiego DANA1A i trzeciego DANA1B. Kiedy DANA100, to 100A i 100B. Nie wiem ile jest słów kluczy w pliku więc, jednak aby po ustawieniu pierwszej, podstawiał dwie kolejne dane.
Prosze o pomoc, działam z tym już dłuższy czas, ale, moja wiedza...jest za bardzo mierna..jeszcze
Nie piszesz zbyt jasno... Co to znaczy wczytuje mi dane do rozdziału ENTEREM?
Zgrubsza rozumiem tyle, ze masz na formularzu trzy Comoboksy, a w pliku dane sa pogrupowane po trzy, tak?
Jesli tych danych nie jest duzo, to mozesz odczytac wszystkie i przechowywac w tablicy wielowymiarowej.
Jesli nie chcesz tego tak zrobic, to pozostaje dynamicznie odczytywac je po wybraniu okreslonej danej z pierwszego Comboboksa.
Numer wiersza pliku tekstowego okreslasz na podstawie aktualnej pozycji Comboboxa oraz ilosci elementow Comboboksa.
powodzenia!
Admin |
|
napisał: grzegorz2989 postów: 6
umieszczony: 4 września 2012 16:02
|
|
Witam.
Mam problem z odczytaniem danych z pliku txt i wpisaniu ich do comboboxów. Plik textowy wygląda jak poniżej:
DANA1
DANA1A
DANA1B
DANA100
DANA100A
DANA100B
Używając SPLIT, wczytuje mi dane do rozdziału ENTEREM, jednak chodzi mi o to, iż jak wybiorę np: w comboboxie DANA1, to chciałbym aby program wczytał mi do drugiego DANA1A i trzeciego DANA1B. Kiedy DANA100, to 100A i 100B. Nie wiem ile jest słów kluczy w pliku więc, jednak aby po ustawieniu pierwszej, podstawiał dwie kolejne dane.
Prosze o pomoc, działam z tym już dłuższy czas, ale, moja wiedza...jest za bardzo mierna..jeszcze |
|
wstecz 1 dalej wszystkich stron: 1
|
|