Strona: [  << <   1 2 3   > >>  ]  z  3     
Autor Temat: mam 2 dni na napisanie wypozyczalni ... i pojawil sie problem
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004
mam 2 dni na napisanie wypozyczalni ... i pojawil sie problem

czesc Wam!
tak jak w tytule topicu, zaczalem wczoraj i co chwile pojawiaja sie bledy, czasem smieszne jak sie okazuje po ich wylapaniu ... mam nadzieje, ze pomozecie mi w rozwiazaniu nie jednego problemu ..
a wiec ..
wpisuje nazwy i dane rekordow z pliku o dostepie swobodnym do siatki (MSFlexGrid) i wszystko ok, tyle, ze dlugosc adresu jest dosc dluga i nie miesci sie w komorce, uzytkownik musi sam powiekszyc (rozszerzyc) myszka kolumne .. moze jest jakis sposob na to abym mogl w kodzie wpisac szerokosc kolumny??
czekam na odpowiedz, siedzac caly czas nad kodem .. i tak jeszcze przez 2 dni ...
dzieki!


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

14-09-2004 20:36
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
anonim




Typ: Nie zarejestrowany
radze umiescic ten temat w dziale

VBA

14-09-2004 21:16
  
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

teraz mam wiekszy problem :/ o ile tamten moze zostac rozwiazany przez uzytkownika to ten musze ja rozwiazac w kodzie ..
wpisuje rekordy do pliku, nazwy pol typowe: nazwisko i imie, adres i inne
chce zrobic tak, aby nie bylo mozliwe wpisanie dwoch takich samych klientow, tzn. o takim samym nazwisku i imieniu ...
oto moj kod:

Private Sub next1_cmd_Click()
Dim kl As klienci
Dim oplata As Variant

Open App.Path & ".\klienci.zep" For Random As #1 Len = Len(kl)

kl.nazw_imie = nazwimie_txt.Text
kl.adres = adres_txt.Text
kl.il_wyp = 0

oplata = MsgBox("Czy klient uiścił zwrotną kaucję, aby mógł wypożyczać płyty CD?", vbYesNo)
If oplata = 6 Then
kl.oplata_cd = True
ElseIf oplata = 7 Then
kl.oplata_cd = False
End If

Put #1, LOF(1) / Len(kl) + 1, kl

Close #1

dodajkl_frm.Hide

End Sub
--------------
probowalem wpisac:
if nazwimie_txt.text <> kl.nazw_imie then
kl.nazw_imie = nazwimie_txt.Text
end if
zamiast:
kl.nazw_imie = nazwimie_txt.Text

ale to na pewno nie to ..
jakbym wymyslil to dam znac


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

14-09-2004 21:51
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

oczywiscie juz kopiuje,dzieki .. ale czemu tam anonimie?


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

14-09-2004 21:52
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

anonim: post jest w dobrym miejscu, nie wprowadzaj Zeppelina w błąd. Nie wiem, po co miałby być w VBA, jeśli dotyczy VB...

Zeppelin:
Co to jest klienci (deklaracja typu) i nie za bardzo rozumiem w czym jest bład.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

14-09-2004 23:38
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

Dzieki Marcinie za odzew ..
klienci to typ, ktory zdefiniowalem w module:

Type klienci
nazw_imie As String * 25
adres As String * 40
il_wyp As Integer
oplata_cd As String * 3
End Type

Problem tkwi w tym, ze nie wiem jak zrobic, aby nie bylo mozliwe istnienie dwoch rekordow o takiem samym nazwisku i imieniu (w jednej zmiennej) w pliku "klienci.zep" ...
sa pola tekstowe:
nazwimie_txt - tutaj nalezy wpisac nazwisko i imie
adres_txt - adres
itd ...
np. uzytkownik wpisuje do pola tekstowego nazwisko i imie, nastepnie program wpisuje go do pliku klienci.zep jako nazwisko i imie ...
----------------------------------------------
nazwisko i imie | adres  | ilosc wypozyczen |
---------------------------------------------
Nowak Jan      | Opole  | 2                |
Ryba Anna      | Wrocław | 1                |
itd ..
...
...

Ja chce zrobic tak, zeby w przypadku gdy uzytkownik wpisuje do pola tekstowego (nazwimie_txt) nazwisko i imie istniejace juz w pliku (czy to w pierwszym rekordzie czy dalszym, obojetnie) to program nie dopuscil do wpisania go ponownie, wyswietlil komunikat "taki klient juz istnieje!" i np. powrocil do poprzedniej formy z dodawaniem klienta, aby uzytkownik mogl zmienic nazwiko i imie na inne ... o to wlasnie mi chodzi, jesli nadal pisze niezbyt zrozumiale, to napisz .. postaram sie inaczej to wytlumaczyc ... odpisz prosze, czekam ... dzieki!


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

15-09-2004 12:25
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

chodzi mi o to, aby nie dopuscic do sytuacji takiej
plik klienci.zep :
rekord 1 --  | Nowak Jan | Opole | 2 |
rekord 2 --  | Nowak Jan | Opole | 2 |

a takze takiej:
rekord 1 --  | Nowak Jan | Opole | 2 |
rekord 2 --  | Nowak Jan | Łódź  | 3 |

nazwy pol rekordow sa przechowywane w zmiennych

kl.nazw_imie
kl.adres
kl.il_wyp
kl.oplata_cd

kl as klienci


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

15-09-2004 12:30
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

Dim kl As klienci
Dim oplata As Variant
Dim Text As String
Text=Read(App.Path & "\.klienci.zep" 'stwórz funkcję, która będzie wstanie wczytać zawartość pliku i wstawić do zmiennej "Text"
If InStr(1,Text,nazwimie)>0 then 'Jest taki użytkownik!!!
msgbox "Jest już taki użytkownik!",16,"Zonk"
Exit Sub
End If

Open App.Path & ".\klienci.zep" For Random As #1 Len = Len(kl)

kl.nazw_imie = nazwimie_txt.Text
kl.adres = adres_txt.Text
kl.il_wyp = 0

oplata = MsgBox("Czy klient uiścił zwrotną kaucję, aby mógł wypożyczać płyty CD?", vbYesNo)
If oplata = 6 Then
kl.oplata_cd = True
ElseIf oplata = 7 Then
kl.oplata_cd = False
End If

Put #1, LOF(1) / Len(kl) + 1, kl

Close #1

dodajkl_frm.Hide

Powinno wystarczyć


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

15-09-2004 14:56
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

Jakbyś nie wiedział, jak stworzyć funkcję otwierającą, to poniżej zamieszczam funkcja, która najlepiej (wg. mnie) wczytuje plik:

Function Read(Filename As String) As String
Dim Bufor As String
Dim Kanal As Integer

Kanal = FreeFile

Open Filename For Input As Kanal
    While EOF(Kanal) <> -1
        Line Input #Kanal, Bufor
        Read = Read & Bufor & vbnewline
       
    Wend
Close Kanal
Read = Left(Read, Len(Read) - 2)
End Function


[Post edytowany dnia 15-09-2004 14:59 przez mikmas]


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

15-09-2004 14:59
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
anonim




Typ: Nie zarejestrowany
dlaczego w VBA ???

"jakis sposob na to abym mogl w kodzie wpisac szerokosc kolumny??
"

Czy to aby nie Exel???
Pozdro!

15-09-2004 20:48
  
Knight Lore''FC




Typ: neutral
Postów: 240
Zarejestrowany: Jan 2003


"jakis sposob na to abym mogl w kodzie wpisac szerokosc kolumny??"

Czy to aby nie Exel???
Pozdro!


Panie anonim - naucz sie VB, a nie VBA...

szerokosc kolumny MsFlexGrid ? - prosze bardzo:

dla kolumny 1
Form1.MSFlexGrid1.ColWidth(0)=300

dla kolumny 2
Form1.MSFlexGrid1.ColWidth(1)=500

itd.

16-09-2004 01:07
Pokaż profil Knight Lore  Wyślij email do Knight Lore        1065423
Knight Lore''FC




Typ: neutral
Postów: 240
Zarejestrowany: Jan 2003


czesc Wam!
tak jak w tytule topicu, zaczalem wczoraj i co chwile pojawiaja sie bledy, czasem smieszne jak sie okazuje po ich wylapaniu ... mam nadzieje, ze pomozecie mi w rozwiazaniu nie jednego problemu ..
a wiec ..
wpisuje nazwy i dane rekordow z pliku o dostepie swobodnym do siatki (MSFlexGrid) i wszystko ok, tyle, ze dlugosc adresu jest dosc dluga i nie miesci sie w komorce, uzytkownik musi sam powiekszyc (rozszerzyc) myszka kolumne .. moze jest jakis sposob na to abym mogl w kodzie wpisac szerokosc kolumny??
czekam na odpowiedz, siedzac caly czas nad kodem .. i tak jeszcze przez 2 dni ...
dzieki!


Jezeli czcionka MsFlexGria jest taka sama jak Formy to mozesz to zrobic tak:

szukasz najwiekszej dlugosci text dla formy. Nie wiem gdzie przechowujesz dane ja zakladam, ze w tablicy Dane

maxT=0
newT=0
for a=0 to ubound(Dane)
  newT=Form1.TextWidth(dane(a))
  if newT>maxT then
    maxT=newT
  end if
next a

'i teraz ustawiasz ze kolumna ma byc szerokosci maxT + 100 (tak dla bezpieczenstwa)

Form1.MSFlexGrid1.ColWidth(0)=maxT

16-09-2004 01:17
Pokaż profil Knight Lore  Wyślij email do Knight Lore        1065423
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

dzieki wielkie ..
wzialem sobie warunek,bo nie zdazyelm go napisac w ciagu 2 dni .. dalej sie mecze
teraz wyskakuje mi taki komunikat:

"Compile error:
Can't Get or Put an object referencevariable or a variable of user-definied type containing an object reference"
i zaznacza mi zmienną wyp w tej linijce:
"    Get #2, i, wyp      "
wyp jest zmienna typu wypozycz, ktora jest zdefiniowana w module:

Type wypozycz
autor As String * 25
album As String * 40
nazw_imie As String * 25
dataa As data
nosnik_wyp As String * 15
End Type

kod, ktory wpisalem powinien wrzucac do siatki dane z pliku wypozycz.zep:

Private Sub wypsiatka_cmd_Click()
Dim wyp As wypozycz

wyp_siatka.Cols = 3
wyp_siatka.Rows = 2
wyp_siatka.FixedCols = 0
wyp_siatka.FixedRows = 1

wyp_siatka.AllowUserResizing = flexResizeBoth 'umozliwia zmiane rozmiarow kolumn i wierszy
wyp_siatka.FormatString = " autor                | album                                          | nazwisko i imię      | nośnik        | data "
wyp_siatka.Rows = 1

Open App.Path & ".\wypozycz.zep" For Random As #2 Len = Len(wyp)

For i = 1 To LOF(2) / Len(wyp)
    Get #2, i, wyp
    wyp_siatka.AddItem wyp.autor & Chr(9) & wyp.album & Chr(9) & wyp.nazw_imie & Chr(9) & wyp.nosnik_wyp & Chr(9) & wyp.data
    Next i
Close #2
End Sub


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

20-09-2004 16:42
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

A co to jest typ Data?
Bo z treści błędu jasno wynika, że w wyp jest jakieś odwołanie do obiektu.. jedynym podejrzanym wydaje się być element .dataa typu data.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

20-09-2004 19:16
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

tak, to jest typ data ...


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

20-09-2004 19:39
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003

czyli rozumuję, że znalazłeś "Data"'ę?


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

20-09-2004 21:32
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

zmienilem zmienna dataa na typ variant ...
kurcze, bylem pewien, ze istnieje typ data !!
dzieki za wskazowke


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

20-09-2004 23:42
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Istnieje typ Date


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

21-09-2004 01:42
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Zeppelin




Typ: neutral
Postów: 21
Zarejestrowany: Sep 2004

az wtyd wchodzic na to forum, nie odrozniam daty od danych :/

pojawil sie nastepny problem, a mianowicie chodzi o sprawdzanie poprawnosci wpisanych do pol tekstowych wyrazen ..
np. mam procedure, ktora dodaje album do rekordu ..
sa pola tesktowe:
------------------------------------------
podaj autora | podaj album | podaj gatunek
------------------------------------------
procedura wyglada tak:

Private Sub nextCD_cmd_Click()
Dim nos As nosnik
Dim autorCD As String
Dim albumCD As String

jest = False

Open App.Path & ".\cd.zep" For Random As #2 Len = Len(nos)

autorCD = StrConv(autorCD_txt.Text, vbProperCase)
albumCD = StrConv(albumCD_txt.Text, vbProperCase)



For t = 1 To LOF(2) / Len(nos)
  Get #2, , nos
    If autorCD = Trim(nos.autor) And albumCD = Trim(nos.album) Then
        jest = True
    Exit For
    End If
Next t

Close #2

'------------------------

If jest = True Then
temp = MsgBox("Taki album już istnieje!", vbOKOnly)
Else

Open App.Path & ".\CD.zep" For Random As #2 Len = Len(nos)

nos.autor = autorCD
nos.album = albumCD
nos.gatunek = gatunekCD_txt.Text
nos.dostepne = "TAK"


Put #2, LOF(2) / Len(nos) + 1, nos

Close #2
End If
dodcd_frm.Hide
End Sub

... zakladam, ze autor albumu oraz nazwa albumu moga zawierac cyfry, w koncu jest zespol 2pac, a albumow z cyframi jest mnostwo, postanowilem, zeby gatunek byl tylko stringiem (nie znam nazwy gatunku, ktory mialby w sobie jakas cyfre) ...
No i co zrobic, aby procedura wykonywala sie jedynie jesli sa spelnione powyzsze warunki,czyli
autor - tekst, liczba, tekst+liczba
album - tekst, liczba, tekst+liczba
gatunek - tylko tekst   
??
Dodatkowym problemem jest, zeby wspisaen dane istnialy pozniej w pliku jako zmienne tekstowe(string), bo tak sa zadeklarowane w module .. to jest niezbedne, np. zeby potem procedura usuwajaca album mogla to usunac ..
kto wie jak zmienic skopiowana wyzej procedure?
pozdrawiam


_____________________________________________
kocham VB .. czasem sni mi sie po nocy .. ale tylko gdy nie mysle o jednym bledzie przez 3 godziny .
pozdrawiam

22-09-2004 12:42
Pokaż profil Zeppelin  Wyślij email do Zeppelin        3833608
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Autor i Album - tutaj nic nie trzeba sprawdzać, bo przecież i tak wszystkie znaki są poprawne.

Gatunek:

If Val(Replace(GatunekCD, "0", "1" )) = 0 Then

Tak wygląda warunek sprawdzający, czy string nie zawiera cyfr.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

22-09-2004 16:10
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Wszystkich odpowiedzi: 42 :: Maxymalnie na stronę: 20
Strona: [  << <   1 2 3   > >>  ]  z  3