Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C#] - Przerabianie warningów z bazy danych + dymki nad obrazkami

tiger1990 09 Paź 2012 00:08 834 4
  • #1 09 Paź 2012 00:08
    tiger1990
    Poziom 12  

    Hej,

    Mam 2 pytania:
    1. W bazie danych mam tabele klienci która ma pesel jako unique. W aplikacji mam mozliwość dodania nowej pozycji do tabeli klient - w przypadku gdy pesel się powtórzy kompilator wywala mi coś takiego:
    [C#] - Przerabianie warningów z bazy danych + dymki nad obrazkami

    I teraz tak - wiem ze wszystko musi być w try catch (specjalnie to wywaliłem zeby pokazać o co chodzi, a chodzi o to zeby z tego komunikatu w catch wyciągnąć nazwę pola w tym wypadku klient_pesel i wrzucić do w message boxa - chodzi o to ze takich pol jest wiecej i chciałbym mieć uniwersalną funkcję która poinformuje użytkownika ze coś źle wypełnił).

    2. Mam obrazek dodawania do bazy danych - chciałbym aby gdy najade na niego myszką wyskoczyła podpowiedz że jest to ikonka dodawania. Trzeba to zrobić w akcji mouse hover, tylko czy jest funkcja która wyświetli mi taki dymek.

    z góry dzięki za pomoc.
    Irek

    0 4
  • Pomocny post
    #2 09 Paź 2012 00:32
    marcinj12
    Poziom 40  

    ad. 1.
    W bloku try-catch wychwyć wyjątek MySqlException i przyjrzyj mu się w debugerze. Zobacz, jaki kod (exception.ErrorCode) dostajesz, kiedy następuje naruszenie klucza. Ten kod powinien być różny w zależności od rodzaju błędu - wtedy zwykłym if'em można na niego odpowiednio zareagować.
    Jeżeli chodzi o nazwę pola to raczej tego nie wyłapiesz ot tak - pozostaje pogrzebać po komunikacie wyjątku i za pomocą wyrażenia regularnego lub prostych operacji na tekście wyłuskać z tego komunikatu nazwę pola. Jako że nazwa pola z bazy danych raczej nie będzie się nadawała do wyświetlenia bezpośrednio użytkownikowi, warto zaimplementować jakiś słowik "tłumaczący" nazwę pola z bazy na przyjazną nazwę do wyświetlenia.

    ad. 2.
    Od obsługi dymka jest kontrolka tooltip - przeciągasz ją na formę, konfigurujesz jej różne właściwości, a w kontrolce pojawia się właściwość ToolTip on toolTip1 którą możesz ustawić na tekst dymka.

    0
  • #3 09 Paź 2012 01:08
    tiger1990
    Poziom 12  

    Super dzięki. Teraz myślę ze sobie poradzę (:

    Dodano po 5 [minuty]:

    Nie jednak, jeszcze jedno pytanie.

    Łapie ten wyjątek MySqlException - tyle ze nie moge go rzutować na stringa. Co robić?

    Dodano po 24 [minuty]:

    I jeszcze jedno pytanie:
    Mam grida który ma kolumny imie, nazwisko itd... "ID" - jakaś unikatowa liczba w bazie danych. I teraz chciałbym wyciągnąć do jakieś zmiennej to pole ( przy czym nie wiadomo jaki DisplayIndeks ma pole ID w gridzie - uzytkownik moze zmieniać kolejność wyświetlania kolumn wedle własnej woli).

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Mam coś takiego - jednak występuje problem konwersji z którym nie potrafie sobie poradzić.

    0
  • #4 09 Paź 2012 01:23
    marcinj12
    Poziom 40  

    tiger1990 napisał:
    Łapie ten wyjątek MySqlException - tyle ze nie moge go rzutować na stringa
    Exception nie jest stringiem, tylko obiektem. Dlatego pisałem żebyś go sobie podejrzał w debugerze, jakie ma pola i co się w nich znajduje. Sam komunikat wyjątku jako string apisany jest w exception.Message

    tiger1990 napisał:
    I jeszcze jedno pytanie:
    Mam grida który ma kolumny imie, nazwisko itd... "ID" - jakaś unikatowa liczba w bazie danych. I teraz chciałbym wyciągnąć do jakieś zmiennej to pole ( przy czym nie wiadomo jaki DisplayIndeks ma pole ID w gridzie - uzytkownik moze zmieniać kolejność wyświetlania kolumn wedle własnej woli). Jak się do tego zabrać?
    A w czym konkretnie problem? Jeśli masz podpięte do grida źródło danych (przypuszczam że jest to tabela?) to masz tą kolumnę w tabeli, nie musisz się nawet odwoływać do grida.

    tiger1990 napisał:
    Mam coś takiego - jednak występuje problem konwersji z którym nie potrafie sobie poradzić.
    Zawartość komórki Cells[...] ma dodatkową właściwość: .Value, i to do niej musisz się odwołać. Jest ona typu object - więc musisz też albo rzutować ją na int, albo dokonać jej konwersji lub parsowania.

    0
  • #5 09 Paź 2012 01:31
    tiger1990
    Poziom 12  

    Dobra działa (:
    Dziękuje serdecznie.

    0