vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 28 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

vb6 sekwencyjny odczyt danych


otwartyotwarty rozpoczął: grzegorz2989 postów: 10



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

  
nazwa pliku rozmiar
Screen.jpg 143.99 kB

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


Sortuj posty: z