Adam G 23 Napisano 9 Grudnia 2016 Udostępnij Napisano 9 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy Pracując z wydrukami zauważyłem jeden problem. Generując dokumenty w języku angielskim informacje w informacjach o nabywcy wyświetla się polska nazwa kraju zamiast angielskiej. Jak co jest to fragment Państwa wydruku. Przeglądając bazę danych nie znalazłem nigdzie tłumaczonych nazw Państw. Pytanie w przypadku gdybym stworzył własną Tabelę z nazwami państw wraz z ich tłumaczeniami kodami i innymi informacjami, jak uzyskać te informacje na dokumencie. Link to postu
Jarek KοIaѕa 2 Napisano 9 Grudnia 2016 Udostępnij Napisano 9 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy (edytowane) Należałoby: 1. Stworzyć połączenie do bazy we wzorcu wydruku (New Data Source w Data Sources). 2. Utworzyć kod (strona Code) pobierający odpowiednią nazwę i wstawiający zamiast nazwy z podmiotu. Przykład: Zapytanie w Connection: select Id, Polski, Angielski, Niemiecki from PanstwaSlownikWielojezyczny Metoda zwracająca tłumaczenie: private string PodajNazwePanstwa(string jezyk, int idPanstwa, string domyslnaNazwa) { var panstwa = PanstwaSlownikWielojezyczny; if (panstwa.RealCount > 0) { panstwa.First(); while (!panstwa.IsEof) { var id = panstwa["Id"]; if (id is int && idPanstwa == (int)id) return (string)panstwa[jezyk]; panstwa.Next(); } } return domyslnaNazwa; } Ponieważ we wzorcu konieczne jest utworzenie połączenia z bazą zawierającą tabelę z tłumaczeniami może utworzyć słownik we wzorcu. Oczywiście ma to głównie sens wtedy gdy tych krajów nie ma wiele itd. itd. Zysk z tego connectiona jest taki, że można trzymać tego typu dane/słowniki w innej bazie niż nexo. Edytowane 9 Grudnia 2016 przez Jarek K. Link to postu
Adam G 23 Napisano 14 Grudnia 2016 Autor Udostępnij Napisano 14 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy Dobra poległem. Tablica z Państwami nazywa się ModelDanychContainer.AKC_Panstwa Kod użyty: private string PanstwoAngielski() { var panstwaTabela = ModelDanychContainer.AKC_Panstwa; string PanstwoPL = Nabywca.AdresKorespondencyjny.Panstwo.Nazwa; string PanstwoEN = string.Empty; if (panstwaTabela.RealCount > 0) { panstwaTabela.First(); while (!panstwaTabela.isEoF) { var PL = panstwaTabela["PanstwoPL"]; if (PL is string && PanstwoPL == (string)PL) return (string)PanstwoEN; panstwaTabela.Next(); } } return PanstwoEN; } I niestety przy kompilacji zwraca błąd: Nazwa 'ModelDanychContainer' nie istnieje w bieżącym kontekście. Jakiś pomysł jak to rozwiązać. Link to postu
Jarek KοIaѕa 2 Napisano 14 Grudnia 2016 Udostępnij Napisano 14 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy (edytowane) Nie wiadomo jakie ma Pan połączenie i zapytanie do bazy. Ja utworzyłem Connection poprzez New Data Source, wybrałem MS SQL i dodałem od razu Query. Nie wybierałem żadnej tabeli. Tabelę miałem w schemie dbo. Edytowane 14 Grudnia 2016 przez Jarek K. Link to postu
Adam G 23 Napisano 15 Grudnia 2016 Autor Udostępnij Napisano 15 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy Dobra tablica z dbo schema dała radę. Za to pojawił się problem z EndofFile, The error of compilation The error of compilation is found in the 'FsStandard' report: Element „Reports.FsStandard.AKC_PanstwaDataSource” nie zawiera definicji „EoF”, a nie odnaleziono metody rozszerzającej „EoF”, która przyjmuje pierwszy argument typu „Reports.FsStandard.AKC_PanstwaDataSource” (czy nie brakuje dyrektywy using lub odwołania do zestawu?). Jakiś pomysł jak to rozwiązać? Link to postu
Jarek KοIaѕa 2 Napisano 15 Grudnia 2016 Udostępnij Napisano 15 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy (edytowane) To czy taka czy inna schema to nie ma znaczenia. Istotna jest tu nazwa utworzonego źródła danych (DataSource). Nieważne jest też, czy zostało utworzone na podstawie zapytania (query), tablicy, procedury składowanej, widoku itp. Nazwa źródła danych w kodzie nie może mieć w nazwie kropki i to jest na pewno błąd. Żeby sprawdzić jak Stimulsoft nazwał źródło danych najprościej w menu kontekstowym na stronie Code zaznaczyć opcję Show Auto Generated Code i w kodzie, który się pojawi znaleźć swoje źródło danych, np: public ModelDanychContainer_AKC_PanstwaDataSource ModelDanychContainer_AKC_Panstwa; Co do problemu: "IsEof" != "isEoF" != "EoF" Wielkość liter ma znaczenie. Edytowane 15 Grudnia 2016 przez Jarek K. Link to postu
Adam G 23 Napisano 16 Grudnia 2016 Autor Udostępnij Napisano 16 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy Hmm. Problem pozostaje nie ważne czy użyję IsEoF czy EoF w każdym przypadku mam błąd że nie odnaleziono metody. private string PanstwoAngielski() { var panstwaTabela = AKC_Panstwa; string PanstwoPL = Nabywca.AdresKorespondencyjny.Panstwo.Nazwa; string PanstwoEN = string.Empty; //magic if (panstwaTabela.RealCount > 0) { panstwaTabela.First(); while (!panstwaTabela.IsEoF) { var PL = panstwaTabela["PanstwoPL"]; if (PL is string && PanstwoPL == (string)PL) return (string)PanstwoEN; panstwaTabela.Next(); } } return PanstwoEN; } Link to postu
Jarek KοIaѕa 2 Napisano 16 Grudnia 2016 Udostępnij Napisano 16 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy Nie dziwię się, bo ma być IsEof, tak jak pisałem w przykładzie. Link to postu
Adam G 23 Napisano 16 Grudnia 2016 Autor Udostępnij Napisano 16 Grudnia 2016 w Wzorce wydruków - informacje z własnej tablicy Dobra dziękuję. Jak człowiek ślepy to chyba musi zacząć nosić okulary. Link to postu
Polecane posty