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

Visual Basic 2010 - SQL Wyświetlanie rekordów z tabeli przy użyciu innej tabeli

27 Sie 2014 11:26 1578 5
  • Poziom 10  
    Witam posiadam program gdzie użytkownicy logują się do bazy sql w której są dwie tabele. Tabela 1(Youtube)Tabela 2(viewed)
    W listview wyświetla się zawartośc tabeli youtube: login użytkownika,id użytkownika, url linku i id linku.
    Gdy kliknie się w przycisk wtedy id linku i id obecnie zalogowanego użytkownika zostają przypisane z aktualnie wyświetlonego itemu z listview do tabeli viewed.

    Teraz chcę zrobić tak aby po po kliknięciu przycisku wiersz który się aktualne wyświetla w listview zniknął i już się nie pojawił dla aktualnie zalogowanego użytkownika a dla innych użytkowników był nadal widoczny

    Kod wygląda następująco próbowałem już coś działać ale link który dla mnie jest niewidoczny dla innych również.

    W tabeli
    Code:

            ds = New DataSet
            da = New MySqlDataAdapter("SELECT * from youtube where id not in (Select site_id from viewed) and user not in (Select user_id from viewed)", sqlcon)
            da.Fill(ds, "youtube")
            lvDisplay.Items.Clear()
            If ds.Tables("youtube").Rows.Count > 0 Then

                For i As Integer = 0 To ds.Tables("youtube").Rows.Count - 1
                    With lvDisplay.Items.Add(ds.Tables("youtube").Rows(i).Item(0).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(3).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(4).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(5).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(6).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(7).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(13).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(2).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(1).ToString)
                        .SubItems.Add(ds.Tables("youtube").Rows(i).Item(14).ToString)

                        End With


    Napiszę w skrócie :D w list view wyświetla się zawartość tabeli youtube
    teraz po kliknięciu w button, id linku i id użytkownika który jest teraz zalogowany zostają wysłane do tabeli viewed w tym momencie wyświetlony wiersz powinien zniknąć, i pojawić się kolejny z tabeli youtube ale powinien być widoczny dla innych zalogowanych użytkowników którzy mają inne id:D

    Wiem że to skomplikowane pomoże ktoś:?:
  • Poziom 10  
    Pomoże ktoś?, może można to zrobić w inny sposób?
  • Poziom 20  
    Zupełnie nie rozumiem co ty chcesz zrobić... takie rzeczy robi się w zapytaniach... poza tym żeby ktokolwiek coś ci odpisał to trzeba podać jak najwięcej wskazówek, strukturę tabel, jakiś skrypt wypełniający je przykładowymi danymi, jakiś obraz tego co byś chciał zobaczyć jako wynik... i dodatkowo szczegółowy opis tego co się dzieje w tabelach jeśli nie masz dostępu do bazy danych i chcesz korzystać z bazy która istnieje...

    Bez tego nie bardzo jest jak pomóc... więc to nie jest niechęć albo zbyt trudne pytanie tylko nie bardzo się ludziom kombinować przez pół swojego wolnego wieczoru żeby na końcu się okazało że to nie o to chodzi...
  • Poziom 10  
    cepelia napisał:
    Zupełnie nie rozumiem co ty chcesz zrobić... takie rzeczy robi się w zapytaniach... poza tym żeby ktokolwiek coś ci odpisał to trzeba podać jak najwięcej wskazówek, strukturę tabel, jakiś skrypt wypełniający je przykładowymi danymi, jakiś obraz tego co byś chciał zobaczyć jako wynik... i dodatkowo szczegółowy opis tego co się dzieje w tabelach jeśli nie masz dostępu do bazy danych i chcesz korzystać z bazy która istnieje...

    Bez tego nie bardzo jest jak pomóc... więc to nie jest niechęć albo zbyt trudne pytanie tylko nie bardzo się ludziom kombinować przez pół swojego wolnego wieczoru żeby na końcu się okazało że to nie o to chodzi...


    ktoś już mi pomógł na zagranicznej stronie chodziło o to:

    da = New MySqlDataAdapter("SELECT *FROM youtube WHERE id NOT IN(SELECT site_id FROM youtube INNER JOIN viewed ON youtube.id=viewed.site_id AND youtube.user=viewed.user_id WHERE user_id=" & ListView2.Items(0).SubItems(0).Text & ")", sqlcon)
  • Poziom 20  
    Widocznie nigdzie nie zrobiłeś update... i działa na kopii danych które masz zassane do dataset, podczas wylogowania powinieneś zrobić właśnie taki update z danych które się zmieniły, po po ponownym zalogowaniu wczytujesz dane od nowa do datasetu (dataadaptera) i masz to co jest w bazie bez update...

    Nadal nie podałeś żadnych szczegółów o których pisałem, żadnych mechanizmów nic... To co pomogli ci zrobić na innym forum to jest właśnie zapytanie sql'owe, choć nie jest dobrą praktyką aby robić to w ten sposób, bo jest to zrobione niechlujnie i ciężko znaleźć jakieś błędy, ale się skompilowało...

    Poczytaj to http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update(v=vs.110).aspx
    i podobne tematy...
  • Poziom 10  
    cepelia napisał:
    Widocznie nigdzie nie zrobiłeś update... i działa na kopii danych które masz zassane do dataset, podczas wylogowania powinieneś zrobić właśnie taki update z danych które się zmieniły, po po ponownym zalogowaniu wczytujesz dane od nowa do datasetu (dataadaptera) i masz to co jest w bazie bez update...

    Nadal nie podałeś żadnych szczegółów o których pisałem, żadnych mechanizmów nic... To co pomogli ci zrobić na innym forum to jest właśnie zapytanie sql'owe, choć nie jest dobrą praktyką aby robić to w ten sposób, bo jest to zrobione niechlujnie i ciężko znaleźć jakieś błędy, ale się skompilowało...

    Poczytaj to http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update(v=vs.110).aspx
    i podobne tematy...



    Powyższy problem rozwiązany a kod do wyświetlania tabeli jest taki:
    Code:
    "SELECT *FROM(youtube) WHERE id NOT IN(SELECT site_id FROM youtube INNER JOIN viewed ON youtube.id=viewed.site_id AND viewed.user_id WHERE user_id=" & ListView2.Items(0).SubItems(0).Text & ")"