Databaza – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Databaza – Visual Basic – Fórum – Programujte.comDatabaza – Visual Basic – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
ing0
Stálý člen
25. 5. 2012   #1
-
0
-

Zdravim pracujem na databaze, kde vyberam jednotlive polozky v comboboxe, vsetko funguje ako ma, pokial sa v databazi nenajdu duplikaty. Ked otvorim combobox tak ukaze oba duplikaty, vyberiem jeden a vzdy do ostatnych textboxov priradi ostatne polozky iba z prveho duplikatu ktory najde... dufam ze sa chapeme prilozim par kodov

 Form_load

Private Sub Form_Load()
Set oRS = New ADODB.Recordset

strDbAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\"cesta k suboru"\Zamestnanci.mdb;Persist Security Info=False"

sqlq = "SELECT * FROM KANCELARIA ORDER BY ZAMESTNANEC"
oRS.Open sqlq, strDbAccess, adOpenForwardOnly, adLockReadOnly

If Not oRS.EOF Then
    Do Until oRS.EOF
        Combo1.AddItem oRS("Zamestnanec")
        oRS.MoveNext
    Loop
End If
oRS.Close
End Sub

Combo1_click

Private Sub Combo1_Click()

sqlq = "SELECT * FROM KANCELARIA ORDER BY ZAMESTNANEC = '" & Combo1.Text & "'"
oRS.Open sqlq, strDbAccess, adOpenForwardOnly, adLockReadOnly
If Not oRS.EOF Then
    Text1.Text = oRS("BYDLISKO")
    Text2.Text = oRS("DATUM_NARODENIA")
    Text3.Text = oRS("TELEFONNE_CISLO")
    Text4.Text = oRS("E-MAIL")
End If
oRS.Close

End Sub

Chcel by som to spravit tak ze program bude vyberat polozky z databazy nielen podla mena ale napr. aj podla ID len to uz neviem skombinovat aby to fungovalo, vzdy som sa dostal iba k chybe

pracujem vo VB6

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
25. 5. 2012   #2
-
0
-

Můžeš to udělat třeba takto ... každá položka Comboboxu by měla mít ještě ItemData, do které si uložíš ID toho zaměstnance a pak po výběru nepracuješ v SQL příkazu se jménem, ale právě s tím uložený ID.

Nahlásit jako SPAM
IP: 78.80.52.–
ing
~ Anonymní uživatel
170 příspěvků
26. 6. 2012   #3
-
0
-

ospravedlnujem sa ze po takom case opat pisem ale akosika nebol cas

tak mam nacitane ID zamestnanca len neviem ako ho pretypovat lebo vzdy sa dopracujem ku chybe... v databaze je ID Zamestnanca ako auto-number, takze ked ho pouzijem namiesto mena tak mam type mismatch

Nahlásit jako SPAM
IP: 213.81.137.–
liborb
~ Redaktor
+18
Guru
26. 6. 2012   #4
-
0
-

sqlq = "SELECT * FROM KANCELARIA WHERE ID='" ........

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
26. 6. 2012   #5
-
0
-

no presne pri tomto mam tuto chybu

data type mismatch in criteria expression

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
26. 6. 2012   #6
-
0
-

A dáváš tam to ID, které sis před tím uložil do ItemData pro každou položku v Comboboxu? Takže něco jako

sqlq = "SELECT * FROM KANCELARIA WHERE ID=" & Combo1.ItemData(Combo1.ListIndex)
Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
26. 6. 2012   #7
-
0
-

presne tak to mam a hadze tu chybu, myslim ze to bude v type premennej kedze je tam mismatch, len netusim ako mam to ID_Zamestnanca pretypovat

tu je aj kod

Public oRS As New ADODB.Recordset
Public strDbAccess As String

Private Sub Combo1_Click()

sqlq = "SELECT * FROM ZAMESTNANCI WHERE ID_Zamestnanca = '" & Combo1.ItemData(Combo1.ListIndex) & "'"
oRS.Open sqlq, strDbAccess, adOpenForwardOnly, adLockReadOnly

If Not oRS.EOF Then
    Text1.Text = oRS("DATUM_NARODENIA")
    Text2.Text = oRS("TEL_CISLO")
    Text3.Text = oRS("BYDLISKO")
    Text4.Text = oRS("E-MAIL")
End If

oRS.Close
End Sub

Private Sub Form_Load()
Set oRS = New ADODB.Recordset

strDbAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\cesta k suboru\Zamestnanci.mdb;Persist Security Info=False"

sqlq = "SELECT * FROM ZAMESTNANCI ORDER BY MENO"
oRS.Open sqlq, strDbAccess, adOpenForwardOnly, adLockReadOnly

If Not oRS.EOF Then
    Do Until oRS.EOF
        Combo1.AddItem oRS("Meno")
        Combo1.ItemData(Combo1.NewIndex) = oRS.Fields("ID_Zamestnanca").Value
        oRS.MoveNext
    Loop
End If
oRS.Close
End Sub
Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
26. 6. 2012   #8
-
0
-

Přetypovává se samozřejmě ItemData na nějaký hezký celočíselný typ při tvorbě toho sql dotazu.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.209.–
ing0
Stálý člen
27. 6. 2012   #9
-
0
-

no len kde to mam pretypovat, samozrejme viem ako ale neviem kde lebo nech skusam co len chcem vzdy som na chybe

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
27. 6. 2012   #10
-
0
-

Něco jako:

sqlq = "SELECT * FROM ZAMESTNANCI WHERE ID_Zamestnanca = " & CInt(Combo1.ItemData(Combo1.ListIndex))
Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
27. 6. 2012   #11
-
0
-

tam som to skusal ako prve, ale stale to hadze rovnaku chybu

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
27. 6. 2012   #12
-
0
-

No ... vzhledem k tomu, že si to nemám šanci vyzkoušet, tak se, prosím tě, hoď celou tu chybu nebo screeshot s tou chybou a řádkem, kde se vyskytla atd. Prostě maximum informací :)

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
27. 6. 2012   #13
-
0
-

   

chybu vyhodi ked sa dostane k oznacenemu riadku

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
27. 6. 2012   #14
-
0
-

Podívej se v ladícím režimu, jaká je hodnota Combo1ListIndex a jaká je pak hodnota příslušného ItemData. Podle všeho je tam prázdný řetězec místo čísla ID (to číslo chyby na to ukazuje). Jo a jen tak mimochodem by si měl mít ten výpis spíše při OnChange, ne? (ComBox1_Change()).

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
27. 6. 2012   #15
-
0
-

itemdata je 3 to sedi k danemu menu a listindex je 0

tak toto funguje pri clicku, a nemyslim ze pri change by bola nejaka zmena... na change bude v neskorsej faze programu uprava poloziek

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
Řešení
liborb
~ Redaktor
+18
Guru
27. 6. 2012   #16
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Tak z toho SQL dotazu ještě vyhoď ty apostrofy a nech si ho přes použitím vypsat ...

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
27. 6. 2012   #17
-
0
-

tak toto teda nie  

vyhodil som apostrofy a funguje to  

diki moc toto som necakal

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
ing0
Stálý člen
17. 7. 2012   #18
-
0
-

ahojte tak narazil som na dalsi problem s ktorym si neviem dat rady

pridal som do databazy vyhladavanie co je samozrejmost tak som to tam musel mat, kod je tu: 

sqlq = "SELECT * FROM ZAMESTNANCI WHERE MENO = '" & Text7.Text & "'"
oRS.Open sqlq, strDbAccess, adOpenForwardOnly, adLockOptimistic

If Not Text7.Text = "" Then
    oRS.MoveFirst
    oRS.Find "MENO='" & Text7.Text & "'"
Else
    Exit Sub
End If

If Not oRS.EOF Then
    Combo1.Text = oRS("MENO")
    Text1.Text = oRS("DATUM_NARODENIA")
    Text2.Text = oRS("TEL_CISLO")
    Text3.Text = oRS("BYDLISKO")
    Text4.Text = oRS("E-MAIL")
    Text5.Text = oRS("ID")
End If
ors.close



vyhladava krasne len problem nastane ked po vyhladani polozku upravim a chcem ju ulozit

dostanem sa na chybu: invalid property array index

ale ked kliknem na combo a vytiahnem si iny zaznam ako som vyhladal tak chybu obidem
 

este tu je kod na ukladanie

chybu vyhadzuje ked sa dostane k prvemu riadku tohto kodu

    sqlq = "SELECT * FROM ZAMESTNANCI WHERE ID = " & Combo1.ItemData(Combo1.ListIndex) & ""
    oRS.Open sqlq, strDbAccess, adOpenForwardOnly, adLockOptimistic
    If Not oRS.EOF Then
        oRS("MENO") = Combo1.Text
        oRS("DATUM_NARODENIA") = Text1.Text
        oRS("TEL_CISLO") = Text2.Text
        oRS("BYDLISKO") = Text3.Text
        oRS("E-MAIL") = Text4.Text
    End If
    oRS.Update
    oRS.Close
Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
17. 7. 2012   #19
-
0
-

Na aktualizaci dat v dB se používá příkaz UPDATE, ne?

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
17. 7. 2012   #20
-
0
-

hej ved tam mam v tom spodnom to je aktualizacia tam je ors.update :D

ono mi to vsetko funguje vyhladava, uklada, aktualizuje, maze, len aktualizacia prestane ist ked vyhladam nejaku polozku a chcem ju aktualizovat a znova zacne ked rozkliknem combobox

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
17. 7. 2012   #21
-
0
-

No dobře :) a jsi si jistý, že v tom řádku, kde to hlásí tu chybu, nemá Combo1.ListIndex hodnotu  -1 nebo tak něco?

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
17. 7. 2012   #22
-
0
-

ked vyhodi chybu tak je -1 a ked funguje spravne tak je od 0 hore

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
17. 7. 2012   #23
-
0
-

No vidíš, ani to nebolelo :), tak si to ošetři.

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
17. 7. 2012   #24
-
0
-

no rad by som ale neviem ako, preto pisem :D

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
17. 7. 2012   #25
-
0
-

No Combo1.ListIndex = -1 znamená, že v ComboBoxu není nic vybraného, to se přece ošetří snadno, ne?

Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
17. 7. 2012   #26
-
0
-

ja som stastny ze som sa dostal do tohto stadia a tu sa fakt neviem pohnut, neviem ako programovo vybrat combo, viem ho vybrat iba pekne rucne rozkliknutim  

skusal som v tom select * from dat namiesto text7.text combo1.text dokonca aj combo1.itemdata ale potom mi neslo vyhladavanie

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
liborb
~ Redaktor
+18
Guru
17. 7. 2012   #27
-
0
-

Možná překvapivě: 

Combo1.ListIndex = 0
Nahlásit jako SPAM
IP: 78.80.52.–
ing0
Stálý člen
17. 7. 2012   #28
-
0
-

stale je tam ta ista chyba skusim to este nejako

EDIT1: skusim sa na to vyspat a zajtra sa pozrem

EDIT2: teraz ked sa na to pozeram tak ten listindex je tam dany na pevno a vzdy mi to hodi iba do jednej danej polozky, listindex je pri kazdej polozke odlisny ide podla abecedy od 0 hore a ked dam 0 tak je to zakazdym prvy zaznam

Nahlásit jako SPAM
IP: 213.81.137.–
V programovani som uplna lama, ale som samouk tak sa nesmejte
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Databáza v C++ — založil Anonymní uživatel

C# a databaza — založil JannyM

Databaza v Jave — založil mienkofax

Databáza receptov :) — založil Tocimanko

Databaza v jazyku C — založil Franky238

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý