Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: ADO & obsługa przez Datalist
Hub




Typ: neutral
Postów: 1
Zarejestrowany: Feb 2005
ADO & obsługa przez Datalist

Witam.
Jestem początkującym programistą VB (wcześniej Delphi i nieco C++), więc jeśli mój problem jest banalny to przepraszam (ale sam nie mogłem dojść).
Mój problem to: połączyłem się z bazą Accessa, przez ADODC, mam komponent Datalist wyświetląjący mi pierwszą kolumnę z tabeli, klikając na nią odpala sie zapytanie SQL... to działa OK. Ale, jak kliknę w jakimś miejscu Datalist i potem chcę się przesunąć o 1 pole w przód lub w tył przez komponent ADODC to wywala błąd. Coś mi tu krzyczy o jakiś duplikatach - nie wiem dokładnie bo mam brazyliskiego windowsa
Z góry dziękuję za pomoc.
Pozdrawiam!

19-02-2005 01:26
Pokaż profil Hub  Wyślij email do Hub        26716844    2668560
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Tak na kobiecą intuicję , bo informacji jest za mało.
Problem leży prawdopodobnie w tym zapytaniu SQL, czy nie jest to kwerenda akualizująca albo dołączająca ? Bo to wyglada tak jakbyś chciał dodać do tabeli rekord identyczny z istniejacym, albo zaktualizować rekord na taki jaki już istnieje, jeśli to jest któraś z tych kwerend należy przedtem skorzystać z metody FindFirst lub inaczej sprawdzić czy rekord juz istnieje????

Dobrze byłoby też podać tutaj jaki jest numer błędu.


_____________________________________________
Karolina

19-02-2005 11:22
Pokaż profil karolinavb  Wyślij email do karolinavb   
anonim




Typ: Nie zarejestrowany

Uzywasz kontrolki Adodc więc przy przesuwaniu sie do przodu po rekordach w koncu trafiasz na ostatni (EOF) co kontrolka rozumie jako ADDNEW record. W momenice wycofania sie do poprzedniego rekordu rekord zostaje zapisany. Niestety kontrolka ADODC dziala w taki sposob ze przy zejsciu z kompletnie pustego rekordu EOF zapisuje tenźe rekord do bazy (same wartosci null) . Zrobisz tak dwa razy i dostajesz powiadomienie o zduplikowaniu klucza podstawowego tabeli. To ten błąd.

22-02-2005 13:01
  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

To znaczy,że masz właściwość EOFAction kontrolki ADODC ustawioną na 2-adDoAddNew (1-dną z 3-ch możliwych), jeśli tak ma pozostać należy w takim przypadku obsłużyć błąd  w zdarzeniu Error tej kontrolki na przykład:

Private Sub Adodc1_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean)
        If ErrorNumber = 16389 Then
            If Adodc1.Recordset.State = ADODB.adStateOpen Then
                Adodc1.Recordset.CancelUpdate
                Adodc1.Recordset.MoveLast
                fCancelDisplay = True
            End If
        End If

End Sub
Zachowanie ADO i DAO jest inne i zagadnienie to jest omówione przez samego Billa na stronie http://support.microsoft.com/default.aspx?scid=kb;en-us;Q190642&ID=190642

[Post edytowany dnia 22-02-2005 14:57 przez karolinavb]


_____________________________________________
Karolina

22-02-2005 14:55
Pokaż profil karolinavb  Wyślij email do karolinavb   
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1