mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Handel Premium - nowa baza https://forum.mix-soft.pl/viewtopic.php?f=15&t=52 |
Strona 1 z 1 |
Autor: | bartek [ 2008-02-20, 12:37 ] |
Tytuł: | 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ć. |
Autor: | rafal [ 2008-02-20, 13:25 ] |
Tytuł: | |
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 |
Autor: | vanszic [ 2008-09-15, 22:26 ] |
Tytuł: | |
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? |
Autor: | rafal [ 2008-09-16, 11:22 ] |
Tytuł: | |
Kod: bDef.Key(0x0100 | 0x0002 , "osoba") bDef.KeyField(11, 40, "Nazwisko") bDef.KeyField(11, 20, "Imie") |
Autor: | vanszic [ 2008-09-16, 11:42 ] |
Tytuł: | |
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 |
Autor: | rafal [ 2008-09-16, 12:13 ] |
Tytuł: | |
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. |
Autor: | vanszic [ 2008-09-16, 13:03 ] |
Tytuł: | |
Wielkie dzięki po południu powalczę z tematem. pozdrawiam |
Autor: | zz [ 2011-11-22, 00:02 ] |
Tytuł: | 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 |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |