wczytywanie przez comboboxa

wczytywanie przez comboboxa
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

Mam taki problem z comboboxem i jego wczytywaniem. Jest to baza w SQL CE. RZSZERZENIE .SDF. Jak usunę z połowy listy pracowika to mi nie wyświetla pozostalych.(usuwanie działa bo usuwa mi to co zaznacze z bazy danych, problem jest z wczytaniem do comboboxa). Wyczytywanie do comboboxa jest po numerach pracownika. Numery są zapisywanne do 1000 co 10. Czyli 1000,1010,1020,1030,1040 i tak dalej. Jak usunę 1020 to wyświetla 1000,1010 a 1030,1040 już nie !.

Kopiuj
 
private void button1_Click_1(object sender, EventArgs e)
     
   {
            string sqla = "DELETE FROM tabela_pracownicy WHERE nr_pracownika = '" + index2 + "'";

            System.Data.SqlServerCe.SqlCeConnection scona = new System.Data.SqlServerCe.SqlCeConnection("Data Source=C:\\Users\\Marek\\Desktop\\BazaDanychSklepu.sdf");

            System.Data.SqlServerCe.SqlCeCommand cmda = new System.Data.SqlServerCe.SqlCeCommand(sqla, scona);

            scona.Open();
            cmda.ExecuteReader();
            scona.Close();

            MessageBox.Show("Pomyślnie usunięto pracownika z bazie danych.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
            comboBox1.Items.Clear();
            listaPracownikow();

        }



 public void listaPracownikow()
        {

            string licznik2S;

            ds_nr_pracownika = new DataSet();
            string sql9 = "SELECT MAX(nr_pracownika) AS Expr1 FROM tabela_praocwnicy";
            da = new System.Data.SqlServerCe.SqlCeDataAdapter(sql9, con);
            da.Fill(ds_nr_praocwnika, "Pracownik");
            DataRow dRow = ds_nr_praocwnika.Tables["Pracownik"].Rows[0];
            licznik2S = dRow.ItemArray.GetValue(0).ToString();
            licznik2 = Convert.ToInt32(licznik2S);

  	     string legenda = "Imie - Nazw. - Adres. - Telef - Miejsc - rok_urodz. - od_kiedy. - do_kiedy. - stano. - mail.";
           
            comboBox1.Items.Add(legenda);

            for (int i = 1000; i <= licznik2; i += 10) 
            {
                ds_nr_pracownika = new DataSet();
                string sql = "SELECT * FROM tabela_praocwnicy WHERE nr_pracownika = " + i;
                da = new System.Data.SqlServerCe.SqlCeDataAdapter(sql, con);
                da.Fill(ds_nr_pracownika, "Pracownik");

                string jeden, dwa, trzy, cztery, piec, szesc, siedem, osiem, dziewiec, dziesiec, wszystko;

                try
                {
                    DataRow dRow33 = ds_nr_dzialki.Tables["Pracownik"].Rows[0];
                    jeden = dRow33.ItemArray.GetValue(11).ToString();
                    dwa = dRow33.ItemArray.GetValue(1).ToString();
                    trzy = dRow33.ItemArray.GetValue(2).ToString();
                    cztery = dRow33.ItemArray.GetValue(3).ToString();
                    piec = dRow33.ItemArray.GetValue(4).ToString();
                    szesc = dRow33.ItemArray.GetValue(5).ToString();
                    siedem = dRow33.ItemArray.GetValue(6).ToString();
                    osiem = dRow33.ItemArray.GetValue(7).ToString();
                    dziewiec = dRow33.ItemArray.GetValue(8).ToString();
                    dziesiec = dRow33.ItemArray.GetValue(9).ToString();
                }
                catch (Exception)
                {

                    return;
                }

                wszystko = jeden + "  " + dwa + "  " + trzy + "  " + cztery + "  " + piec + "  " + szesc + "  " + siedem + "  " + osiem + "  " + dziewiec + "  " + dziesiec;

                comboBox1.Items.Add(wszystko);
            }
        }

 
edytowany 2x, ostatnio: flowCRANE
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

Trochę to poprawiłem, ale nadal mam problem. To co usunę z comboboxa usuwa się z niego i z bazy danych oraz pozostają pozostałe numery. Ale jest problem że robi się swego rodzaju dziura. Wygląda to tak że np: jak są numery 1000,1001,1002,1003,1004,1005. Jak usunę np 1002 to faktycznie 1003, 1004 i 1005 pozostają, ale jak chce wybrać 1005 to pojawiają się dane z numeru z 1003 lub 1004 a jak wybieram numer 1003 to pojawia się błąd że takiego pracownika nie ma w bazie. To tak jakby pracownicy przesunęli się o tą usuniętą pozycje w dół.

Kopiuj
            } 
edytowany 1x, ostatnio: przonak007
DU
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:25
0

Wyglada na to ze program dzial poprawnie.mjezeli masz pracownikow w bazie i ich numery ida po kolei zgodnie ze wzorcem 1000, 1010, 1020. Jezeli usuniesz pracownika 1020 to pozniej wybierajac rekord o takim numerze pracownika dostaniesz 0 wynikow - select ... where nr_pracownika = 1020. Wtedy w bloku try biorac ...Row [0] dostaniesz wyjatek, przechodzi do bloku catch a tam wychodzisz z funkcji. Czyli nie pobierasz reszty.
Co do drugiego posta, wybieranie jest o jiebo lepsze. Za pomoca jednego zapytania wybierasz wszystko. Nie wiem gdzie dokladnie pojawia sie blad, chyba tej funkcji nie dolaczyles wiec bede troche zgadywal. Jezeli twoja fukcja wybierajaca opiera sie o indeks elemntu to po usnieciu elemntu 1002, numer 1005 jest na pozcji to selected index comboboxa ma wartosc 4. Teraz jezeli twoj select wybiera where nr_pracownika = 1000 + index wtedy dostaniesz pracownika o numerze 1004. Jak wybierzesz trzeci element czyli numer 1003 to index jest 2 a pracownika o 1002 jak opisujesz usnoles.

Pamitaj, usuniecie z bazy danych nie modyfikuje wartosci innych wierszy, w twoim przypadku nie przesuwa wartosci w kolumnie nr_pracownika tab by nie bylo luk w numeracji. Aby uniknac problemu pobieraj wartosc selectedValue z comboboxa.

P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

Faktycznie popełniłem błąd. To jest wszytko co mam.

Kopiuj
 private void wczytywanie_Click_1(object sender, EventArgs e)// To jest wczytuwanie z comboboxa
        {
            
}

   private void usuwanie_Click_1(object sender, EventArgs e)// Tym przyciskiem usuwam z comboboxa i z bazy pracowników 
        {
         
        }
edytowany 5x, ostatnio: flowCRANE
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

Dziękuje za pomoc :). Zmieniłem całkowicie funkcje wyszukiwanie i dałem coś takiego i działa. Tylko teraz mam dwa problemu.

1.Jak teraz wczytać z bazy danych do poctuerbox zdjęcie?.
2.Jak zrobić w comboboxie taką legęde: żeby pod spodem były wszystkie dane z bazy danych ?

Kopiuj
string legenda = "nr_prac. - Imie - Nazw. - Adres. - Telef - Miejsc - rok_urodz. - od_kiedy. - do_kiedy. - stano. - mail."

Tak żeby pod spodem były wszystkie dane z bazy danych ?.

Kopiuj

}
edytowany 3x, ostatnio: flowCRANE
DU
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:25
0

Co do pierwszego pytania to majac dataReader powinna wystarczyc taka linika

Kopiuj
PictureBox.Image = Image.FromStream(dr.GetStream(10))

Zakładając że 10 kolumna którą odczytujesz to blob lub binary data. Ale nie wiem czy SqlLite obsluguje taki typ danych.

Jezeli dobrze rozumiem drugie pytanie to chialbys w coboboxie wyswietlic bardziej zlozony tekst z odczytanych danych. Nie tylko identyfikator pracownika. W takim razie proponuje Ci zapoznac sie z opisem w sekcji Remarks pod addresem http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.items.aspx
Wtedy definujesz klase o dwóch wlasciwosciach Display (String) oraz Value (int). W funkcji, która uzupełnia wartosci combo boxa dla kazdego wiersza w tablei tworzysz obiekt gdzie do wlasciwosci display wrzucasz tekst z danych odczytanych w bazie a do Value numer pracownika. Dla legendy tez tworzysz obiekt gdzie Display to legenda a Value np. dajesz 0 tak by odróżniać ze to legenda.
Pozostaje odczytanie wartosci. Zamiast uzywac comboBox.Text uzywasz czegos takiego
WorkerItem item = (WorkerItem)comboBox.SelectedItem;

Kopiuj
if (item.Value > 0)
{
  // czytasz dane ale doklejasz teras do zapytania " + item.Value + "
}

Sugeruje zebys zaprzyjaznil sie z MSDN znajc typ danych wpisujesz w googla jej nazwe ze slowem .net i dostajesz pomoc. Cesto sa tam przyklady kodu jak czegos uzywac. Somo przegladanie wlasciwosci klasy jest bardzo pouczajace gdyz wiele funkcjonqlnosci mozna napisac na kilka sposobów a dodatkowo mozna odkryc ciekawe funkcje.

P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

Dzięki za radę :), na razie zrobiłem coś takiego, ale wystąpił błąd w comboboxie przy wczytywaniu http://zapodaj.net/a11f8d841922c.png.html. Wydaje mi sie że błąd jest w zaznaczeniu głównej danej do wczytywania

to mój cały kod

Kopiuj
 public void lista1()//wczytywanie danych z bazy do comboboxa
        {
            
edytowany 3x, ostatnio: flowCRANE
Japer
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 11 lat
  • Postów:47
0

O cholera... Weź poczytaj coś na temat pętli for, bo mnie oczy już bolą :P

usunięcie cytowania całego poprzedniego posta - fp


Znajdź mnie na Wykopie! Nie jestem niczyim murzynem, żeby robić za Ciebie program. Nawet nie próbuj pisać na PW! :D
edytowany 1x, ostatnio: flowCRANE
flowCRANE
Nie cytuj całego posta, jeśli piszesz zaraz pod nim! Masz do powiedzenia jedno zdanie, a rozciągasz posta na dwa ekrany - zastanów się następnym razem zanim cokolwiek odpiszesz;
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

Wykombinowałem coś takiego:

Kopiuj
     public void lista1()//wczytywanie do comboboxa
        {
          
        }

Wyskakuje mi coś takiego: http://zapodaj.net/73d3755bc1d35.png.html. ComboBoxDM to jest osobny plik o nazwie ComboBoxDM.cs pod spodem załączam jego kod :

Kopiuj
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


}

Chciałem poprzez ID wczytywać pozostałe dane z comboboxa do textboxów, a poprzez NAME wyświetlały się te dwie dane z bazy w comboboxie

edytowany 4x, ostatnio: flowCRANE
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
0

Prawdopodobnie musisz przedefiniowac ComboBoxDM.ToString().

DU
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:25
0

Tak jak pisal n0name mozna napisac swoje toString. innym jest konfiguracja comboboxa tak by odczytywal odpowednia wlasciwosc. Proponuje google "combobox .net" i przegladnac wlasciwosci :)

P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

dzięki za pomoc :), już sobie poradziłem :)

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)