|
|
Strona 1 z 1
|
[ Posty: 8 ] |
|
Handel Premium - nowa baza
Autor |
Wiadomość |
bartek
Rejestracja: 2007-12-07, 11:07 Posty: 86
|
Handel Premium - nowa baza
Witam, czy możliwe jest stworzenie nowej bazy (pliku .dat) w Handel Premium tak aby można było wpisywać wartości ze standardowych baz/plików poprzez użycie języka raportów. Jeśli tak w jaki sposób to obsłużyć.
|
2008-02-20, 12:37 |
|
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Można
1. Dodatkową bazę utworzyć w Accesie, SQL lub innej dowolnej i z poziomu AMBasic'a komunikować się za pomocą ODBC. "ADODB.Connection"
2. Utworzyć nową tabelę w postaci pliku *.DAT
Kod: //Przykład wykorzystania poleceń obsługi baz danych //Uworzenia struktury definicji bazy danych BaseDef bDef //Utworzenie nowej definicja tabeli typu "osoby" bDef.New("Osoby") //Zdefiniowanie pól tabeli bDef.Field(15, 4, "ID") bDef.Field(11, 40, "Nazwisko") bDef.Field(11, 20, "Imie") //Zdefiniowanie klucza podstawowego "ID", automatyczna numeracja bDef.Key(0x0100, "ID") //Określenie pola klucza podstawowego bDef.KeyField(15, 4, "ID") //Utworzenie i udostępnienie definicji bDef.Create() //Określenie położenia pliku bazy String sciezka=KatalogFirmy() + "NOWABAZA.DAT" //Utworzenie pliku bazy danych Create sciezka For Base "Osoby" //Ustalenie sposobu obsługi błędu tworzenia bazy BaseError (sciezka, 4) //Otworzenie bazy danych Int nrBazy=Open sciezka For Base "Osoby" BaseError (sciezka, 4) //Wpisanie do bazy rekordu SetKey (nrBazy, "ID") SetKeySeg (nrBazy, "ID", 0) SetField (nrBazy, "Nazwisko", "Nazwisko1") SetField (nrBazy, "Imie", "Imię1") InsRec (nrBazy) baseError (nrBazy, 4) //Zamknięcie pliku bazy danych Close nrBazy //Powtórne otworzenie pliku bazy danych Int nrBazy1=Open sciezka For Base "Osoby" baseError (nrBazy1, 4) //Ustawienie rekordu bazy do odczytu SetKey (nrBazy1, "ID") SetKeySeg (nrBazy1, "ID", 1) //Odczytanie rekordu bazy GetRec (nrBazy1, EQ) baseError (nrBazy1, 4) //Sprawdzenie zapisanych w rekordzie informacji String p1=GetField (nrBazy1, "Nazwisko") String p2=GetField (nrBazy1, "Imie") String wpis="Zawartość rekordu odczytana z bazy: "+" "+p1+" "+p2 Print wpis;LF //Zmiana zawartości rekordu SetField (nrBazy1, "Nazwisko", "NoweNazwisko1") SetField (nrBazy1, "Imie", "NoweImię1") PutRec (nrBazy) //Ponowne ustawienie rekordu bazy do odczytu SetKey (nrBazy1, "ID") SetKeySeg (nrBazy1, "ID", 1) //Sprawdzenie istnienia ustawianego rekordu Int jest=GetKey (nrBazy1, EQ) If jest then Print "W bazie brak ustawianego rekordu"; LF else Print "W bazie istnieje ustawiony rekord"; LF EndIf //Sprawdzenie zawartości wybranego segmantu klucza ustawionego rekordu Int Seg=GetKeySeg (nrBazy1, "ID") Print "Segment ID klucza wybranego rekordu ma wartość: ", Seg; LF //Odczyt nowej zawartości rekordu GetRec(nrBazy1, EQ) //Sprawdzenie zapisanych w rekordzie nowych informacji String p1n=GetField (nrBazy1, "Nazwisko") String p2n=GetField (nrBazy1, "Imie") String wpisn="Zmieniona zawartość rekordu odczytana z bazy: "+" "+p1n+" "+p2n Print wpisn;LF //Usunięcie rekordu SetKey (nrBazy1, "ID") SetKeySeg (nrBazy1, "ID", 1) DelRec (nrBazy1) //Ponowne ustawienie rekordu bazy do odczytu usuniętego rekordu SetKey (nrBazy1, "ID") SetKeySeg (nrBazy1, "ID", 1) //Sprawdzenie istnienia ustawianego rekordu Int jest1=GetKey (nrBazy1, EQ) If jest1 then Print "Sprawdzenie usunięcia rekordu - rekord został usunięty"; LF else Print "Sprawdzenie usunięcia rekordu - rekord istnieje"; LF EndIf //Zamknięcie pliku bazy danych Close nrBazy1 //Usunięcie pliku bazy danych Delete File sciezka //Sprawdzenie usunięcia pliku bazy danych Int nrBazy2=Open sciezka For Base "Osoby" If nrBazy2>0 then Print "Sprawdzenie usunięcia pliku bazy - baza istnieje"; LF Close nrBazy2 else Print "Sprawdzenie usunięcia pliku bazy - baza została usunięta"; LF EndIf
przykład pochodzi ze strony producenta oprogramowania
|
2008-02-20, 13:25 |
|
|
vanszic
Rejestracja: 2008-06-10, 23:15 Posty: 5
|
Witam, czy mógł bym prosić o razszeżenie twmatu o twożenie dodatkowych kluczy, np jak by wyglądał klucz osoba ustawiający tabelę wg nazwiska a potem imienia?
|
2008-09-15, 22:26 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Kod: bDef.Key(0x0100 | 0x0002 , "osoba") bDef.KeyField(11, 40, "Nazwisko") bDef.KeyField(11, 20, "Imie")
|
2008-09-16, 11:22 |
|
|
vanszic
Rejestracja: 2008-06-10, 23:15 Posty: 5
|
Dzięki za szybką odpowiedź.
czyli:
pierwszy indeks:
//Zdefiniowanie klucza podstawowego "ID", automatyczna numeracja
bDef.Key(0x0100, "ID")
//Określenie pola klucza podstawowego
bDef.KeyField(15, 4, "ID")
drugi klucz:
bDef.Key(0x0100 | 0x0002 , "osoba")
bDef.KeyField(11, 40, "Nazwisko")
bDef.KeyField(11, 20, "Imie")
to trzeci klucz załużmy, że mamy jeszcze jedno pole o nazwie "Drugie Imie" wyglądał by następująco:
bDef.Key(0x0100 | 0x0003 , "osoba2")
albo bDef.Key(0x0100 | 0x0002 | 0x0003 , "osoba2")
bDef.KeyField(11, 40, "Nazwisko")
bDef.KeyField(11, 20, "Drudie Imie")
czy mam dobry tok rozumowania?
co oznaczają wartości w polach bDef.Key(pole1 | pole2 , "nazwa klucza")
czy są to indeksy kolejnych kluczy?
z góry dziękuję za odpowiedź.
Pozdrawiam
|
2008-09-16, 11:42 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
kolejny klucz będzie wyglądał tak samo
Kod: bDef.Key(0x0100 | 0x0002 , "osoba2") bDef.KeyField(11, 40, "Nazwisko") bDef.KeyField(11, 20, "DrugieImie")
dodam, że tak zdefiniowane klucze nie pozwolą na zapisanie w bazie dwóch osób o takich samych imionach i nazwiskach.
|
2008-09-16, 12:13 |
|
|
vanszic
Rejestracja: 2008-06-10, 23:15 Posty: 5
|
Wielkie dzięki
po południu powalczę z tematem.
pozdrawiam
|
2008-09-16, 13:03 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
kilkakrotne InsRec - błąd
Kiedy w poniższym kodzie próbuję wstawić dwa rekordy, funkcja GetRecordCount zwraca mi wartość 1 - czemu nie wstawiają się obydwa rekordy?
Poza tym mam bład "Zbyt mały bufor danych" ???.
Kod: //Uworzenia struktury definicji bazy danych BaseDef bDef
//Utworzenie nowej definicja tabeli typu "osoby" bDef.New("Osoby")
//Zdefiniowanie pól tabeli bDef.Field(15, 4, "ID") bDef.Field(11, 40, "Nazwisko") bDef.Field(11, 20, "Imie")
//Zdefiniowanie klucza podstawowego "ID", automatyczna numeracja bDef.Key(0x0100, "ID")
//Określenie pola klucza podstawowego bDef.KeyField(15, 4, "ID")
//Utworzenie i udostępnienie definicji bDef.Create()
//Określenie położenia pliku bazy String sciezka=KatalogFirmy() + "NOWABAZA.DAT"
//Utworzenie pliku bazy danych Create sciezka For Base "Osoby"
//Ustalenie sposobu obsługi błędu tworzenia bazy BaseError (sciezka, 4)
//Otworzenie bazy danych Int nrBazy=Open sciezka For Base "Osoby" BaseError (sciezka, 4)
//Wpisanie do bazy rekordu SetKey (nrBazy, "ID") SetKeySeg (nrBazy, "ID", 0)
SetField (nrBazy, "Nazwisko", "Nazwisko1") SetField (nrBazy, "Imie", "Imię1") InsRec (nrBazy) message USING "%l",GetRecordCount(nrBazy)
SetField (nrBazy, "Nazwisko", "Nazwisko2") SetField (nrBazy, "Imie", "Imię2") InsRec (nrBazy) message using "%l",GetRecordCount(nrBazy)
baseError (nrBazy, 4)
//Zamknięcie pliku bazy danych Close nrBazy
//Usunięcie pliku bazy danych Delete File sciezka
_________________ zz
|
2011-11-22, 00:02 |
|
|
|
Strona 1 z 1
|
[ Posty: 8 ] |
|
Kto jest online |
Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 19 gości |
|
Nie możesz tworzyć nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników
|
|
|
|