Programowanie w języku Visual Basic Zapisywanie danych Andrzej Borowiecki Kraków 2009
Otwarcie pliku tekstowego do zapisywania Jeżeli chcemy zapisywać wyniki do pliku tekstowego, na przykład o nazwie plikw – otwieramy go do pisania (Output) instrukcją: Open plikw For Output As #2 - jeżeli chcemy dopisywać (Append) do istniejącego pliku
Pisanie wyników do pliku tekstowego Do zapisywania wyników w pliku tekstowym można wykorzystać dwie instrukcje Write i Print: Write #2, nr, x, y Print #2, nr, x, y Sposób zapisywania danych w pliku przez te dwie instrukcje jest różny: Write: "A",1000,1000 "B",2000,2000 "C",1000,2000 Print: A 1000 1000 B 2000 2000 C 1000 2000
Zapisywanie za pomocą instrukcji WRITE jest korzystne, kiedy np Zapisywanie za pomocą instrukcji WRITE jest korzystne, kiedy np. numery (nazwy) punktów zawierają litery. Wtedy instrukcja do czytania z pliku - INPUT z łatwością odróżni nazwę punktu od współrzędnej, ponieważ są oddzielone przecinkiem, a tekst jest wzięty w cudzysłowy: "A",1000,1000 Jak widać przecinek służy do oddzielania zmiennych od siebie, a nie części całkowitej od ułamkowej. Te same zmienne zapisane instrukcją PRINT: A 1000 1000 Nie wiadomo, gdzie kończy się nazwa punktu, a gdzie zaczyna się współrzędna.
Proste zastosowanie instrukcji WRITE w sposób pokazany poniżej: Private Sub CommandButton6_Click() Open PLIKW For Append As #2 Write #2, nra, nrb, DAB, AZYM Close #2 End Sub prowadzi do powstania pliku tekstowego, którego czytelność dla człowieka pozostawia wiele do życzenia: 22,23,3.1950743344259,237.378146249451 1,2,32.1081687424026,97.8582426336964 11,21,32.1081687424026,97.8582426336964 11,21,52.7096850680637,275.874894956503 Oczywiście komputer nie będzie miał żadnych kłopotów z odczytem.
Private Sub CommandButton6_Click() Open PLIKW For Append As #2 Raport przeznaczony dla człowieka musi mieć bardziej uporządkowaną formę. Tym razem stosujemy instrukcję PRINT: Private Sub CommandButton6_Click() Open PLIKW For Append As #2 Print #2, nra, nrb, DAB, AZYM Close #2 End Sub 2 3 33.4443208927021 95.2176649156501 2 12 62.1943188719988 87.3992818674916 11 23 54.6244496539166 276.548844101659 23 28 29.0341178613983 213.117019226048
Open PLIKW For Append As #2 Print #2, " OD DO DŁUGOŚĆ AZYMUT ” Konieczne jest sformatowanie zapisywanych wartości oraz dodanie nagłówka: Open PLIKW For Append As #2 Print #2, " OD DO DŁUGOŚĆ AZYMUT ” Close #2 Open PLIKW For Append As #2 Print #2, Format(nra, "@@@@"), Format(nrb, "@@@@"), Format(DAB, "###.00"), Format(AZYM, "###.0000") Close #2 OD DO DŁUGOŚĆ AZYMUT 22 23 3.20 237.3781 22 21 2.50 194.3898 22 25 65.38 217.0296
Dodawanie obiektów do ToolBox Jeżeli w ToolBox nie występuje jakiś obiekt np. tabelka vsFlexArray , trzeba uzupełnić zawartość ToolBox: - kliknąć prawym klawiszem myszy na wolne miejsce wewnątrz ToolBox, - wybrać opcję: Additional Controls - zaznaczyć pole obok Formant VideoSoft FlexArray - kliknąć OK
Instrukcje związane z tabelą: tab1.Cols = - określa liczbę kolumn w tabeli tab1.Rows = - określa liczbę wierszy w tabeli tab1.Col = - określa aktualną kolumnę w tabeli tab1.Row = - określa aktualny wiersz w tabeli tab1 = x - wstawia zmienną x do tabeli w miejscu określonym przez aktualny wiersz i kolumnę y = tab1 - podstawia pod zmienną y zawartość tabeli określoną przez aktualny wiersz i kolumnę
Private Sub UserForm_Activate() tab1.Rows = 1: tab1.Cols = 5 tab1.Row = 0 tab1.Col = 1: tab1 = "OD" tab1.Col = 2: tab1 = "DO" tab1.Col = 3: tab1 = "Długość" tab1.Col = 4: tab1 = "Azymut" End Sub
Public Sub Obliczenia() DX = XB - XA DY = YB - YA DAB = Sqr(DX ^ 2 + DY ^ 2) AZYM = azymut tab1.Rows = tab1.Rows + 1: tab1.Row = tab1.Rows - 1 tab1.Col = 0: tab1 = tab1.Row tab1.Col = 1: tab1 = nra tab1.Col = 2: tab1 = nrb tab1.Col = 3: tab1 = Format(DAB, "#.00") tab1.Col = 4: tab1 = Format(AZYM, "#.0000") End Sub
Przycisk: Wybrany wiersz do raportu Private Sub CommandButton7_Click() tab1.Col = 1: t1 = tab1 tab1.Col = 2: t2 = tab1 tab1.Col = 3: t3 = tab1 tab1.Col = 4: t4 = tab1 Open PLIKW For Append As #2 Print #2, Format(t1, "@@@@"), Format(t2, "@@@@"), Format(t3, "###.00"), Format(t4, "###.0000") Close #2 End Sub OD DO DŁUGOŚĆ AZYMUT 55 22 59.41 330.4895 1 2 32.11 97.8582