[eVB] form submit afvangen

Pagina: 1
Acties:

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Ik ben bezig met een agenda appje te maken in embedded VB met een databeestje erachter.
Maar nu heb ik een (n00b?) vraagje :)
Afbeeldingslocatie: http://www.xs4all.nl/~dennisvr/got/vb_screen.jpg
dat is mijn form met 2 comboboxen en 2 textboxen.
(cmbDag,cmbUur,txVak,txDocent)

Nu wil ik dus bij het invoeren de waarden van die 4 dingen in mijn database zetten.
maar hoe vang ik die waarden af?
code:
1
2
3
4
5
Private Sub btInvoeren_Click()
    ExecSQL "Insert into TestTable (lesdag,uur,vak,docent) 
VALUES (cmbDag.Text,cmbUur.Text,txVak.Text,txDocent.Text)", 
"TestTable created.", "Fout bij het invoeren"
End Sub

dat werkt dus niet en geeft een fout bij het invoeren
hoe moet het wel?

Doet iets met Cloud (MS/IBM)


Verwijderd

combobox.Text? Kun je niet beter combobox.SelectedItem o.i.d. doen? Heb pas nog met VB gewerkt, weet t ook niet helemaal meer :)

Verwijderd

Op dinsdag 19 februari 2002 18:35 schreef Pino20 het volgende:
combobox.Text? Kun je niet beter combobox.SelectedItem o.i.d. doen? Heb pas nog met VB gewerkt, weet t ook niet helemaal meer :)
Heeft ook .Text hoor. Waar geeft ie de fout precies, en welke?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
hij komt bij "Fout bij het invoeren"
hoe kan ik daar de echte error laten zien eik?

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op dinsdag 19 februari 2002 18:35 schreef Pino20 het volgende:
combobox.Text? Kun je niet beter combobox.SelectedItem o.i.d. doen? Heb pas nog met VB gewerkt, weet t ook niet helemaal meer :)
noopz dat is geen element dat in het lijstje staat als ik cmbdag. intik :)

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 19 februari 2002 18:29 schreef D2k het volgende:
code:
1
2
3
4
5
Private Sub btInvoeren_Click()
    ExecSQL "Insert into TestTable (lesdag,uur,vak,docent) 
VALUES (cmbDag.Text,cmbUur.Text,txVak.Text,txDocent.Text)", 
"TestTable created.", "Fout bij het invoeren"
End Sub
VB kent geen variabele invoeging zoals bijv. PHP dat kent. Je moet strings aan elkaar voegen met een + of &. Je moet dus "..." + cmbDag.Text + "..." doen.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op dinsdag 19 februari 2002 20:42 schreef elnino het volgende:
VB kent geen variabele invoeging zoals bijv. PHP dat kent. Je moet strings aan elkaar voegen met een + of &. Je moet dus "..." + cmbDag.Text + "..." doen.
hm ja?
maar dat is toch hier het probleem niet?
ik voer gewoon 4 velden in?
(1,2,3,4)
of snap ik er echt nix van?

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 19 februari 2002 20:46 schreef D2k het volgende:
hm ja?
maar dat is toch hier het probleem niet?
ik voer gewoon 4 velden in?
(1,2,3,4)
of snap ik er echt nix van?
Als jij in VB variabelen (of properties in dit geval) in een string wilt stoppen, moet je + of & gebruiken. Dus iets als ".. VALUES (""" + var + """," etc. Anders wordt de query letterlijk:
code:
1
2
Insert into TestTable (lesdag,uur,vak,docent) 
VALUES (cmbDag.Text,cmbUur.Text,txVak.Text,txDocent.Text)

(een dubbele quote is de manier van VB om quotes te escapen, btw).

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
ok mijn query is nu
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ExecSQL "
    Insert into TestTable 
            (
                lesdag,
                uur,
                vak,
                docent
            ) 
            VALUES 
            (
                """ + cmbDag.Text + """,
                """ + cmbuur.Text + """,
                """ + txVak.Text + """,
                """ + txDocent.Text + """
            )",
            "TestTable created.", "Fout bij het invoeren"

maar nog steeds kom ik uit bij "Fout bij invoeren"
hoe kan ik daar zo iets doen als een sort mysql_error() :?

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
• Echo je query (ik weet niet precies hoe dat in Embedded VB kan)
• Controleer of er connectie met de DB is
• Controleer of de tabel bestaat
• Controleer of de velden bestaan

Daarnaast moet je bij ComboBox'en cmb.List(cmb.ListIndex) gebruiken om er informatie in te voegen, de tekst is daar zelf namelijk niet te bewerken, dacht ik. (cmb vervangen door de naam van de ComboBox.

edit: .Text kan dus ook, heb ik daarnet uitgetest onder normaal VB. (alleen ik heb geen verstand van Embedded VB)

edit2: VB ondersteunt geen multi-line strings, behalve als je gebruikt maakt van _ .

edit3: Voorbeeldje:
code:
1
2
    Form1.Caption = "hoi _
    hoiho"

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op dinsdag 19 februari 2002 21:00 schreef elnino het volgende:

• Echo je query (ik weet niet precies hoe dat in Embedded VB kan)
ik ook niet :)
code:
1
[*] Controleer of er connectie met de DB is

das idd wel een goeie :)
ga ik doen
• Controleer of de tabel bestaat
dat weet ik zeker
• Controleer of de velden bestaan
weet ik ook zeker (van de DB dan de rest weet ik niet :))
Daarnaast moet je bij ComboBox'en cmb.List(cmb.ListIndex) gebruiken om er informatie in te voegen, de tekst is daar zelf namelijk niet te bewerken, dacht ik. (cmb vervangen door de naam van de ComboBox.

edit: .Text kan dus ook, heb ik daarnet uitgetest onder normaal VB. (alleen ik heb geen verstand van Embedded VB)
tis als het goed is bijna gewoon VB alleen iets anders in de dll's geloof ik
edit2: VB ondersteunt geen multi-line strings, behalve als je gebruikt maakt van _ .
weet ik
zijn allemaal max 4 karakters (limiet in de properties dus das geen probleem
edit3: Voorbeeldje:
code:
1
2
    Form1.Caption = "hoi _
    hoiho"
k tnx maar das in dit geval niet nodig
onthou het wel iig

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
het wordt spannender :)
code:
1
ExecSQL "Insert into TestTable (lesdag,uur,vak,docent) VALUES (""" + cmbDag.ListIndex + """,""" + cmbuur.ListIndex + """,""" + txVak.Text + """,""" + txDocent.Text + """)", "TestTable created.", "Fout bij het invoeren"

levert
Afbeeldingslocatie: http://www.xs4all.nl/~dennisvr/got/vb_screen2.jpg

Doet iets met Cloud (MS/IBM)


  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Ondersteunt VB embedded toevallig ADO? Dat is vooral met die quotes erg handig bij INSERT's...

Nooit me embedden gewerkt dus geen id wat het wel en niet kan.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 19 februari 2002 21:20 schreef D2k het volgende:
het wordt spannender :)
Ach... het is VB :+
code:
1
ExecSQL "Insert into TestTable (lesdag,uur,vak,docent) VALUES (""" + cmbDag.ListIndex + """,""" + cmbuur.ListIndex + """,""" + txVak.Text + """,""" + txDocent.Text + """)", "TestTable created.", "Fout bij het invoeren"

ListIndex is een getal. Je moet de combinatie cmbUur.List(cmbUur.ListIndex) gebruiken, of .Text. Dat laatste is makkelijker.

Ik vraag me af: kent Embedded VB een MsgBox? Dus dat je MsgBox "query" doet?
Op dinsdag 19 februari 2002 21:25 schreef stylee het volgende:
Ondersteunt VB embedded toevallig ADO? Dat is vooral met die quotes erg handig bij INSERT's...
Embedded VB ondersteunt een vorm van ADO, nl. ADOCE, zie http://msdn.microsoft.com/library/en-us/dncetkvb/html/vbcetour.asp?frame=true...

Ik ken trouwens die hele ExecSQL functie niet, is dat een eigen functie?

Maar ik heb nog nooit met Embedded VB gewerkt...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
die msgbox kent het :)
ff de syntax zoeken

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 19 februari 2002 21:28 schreef D2k het volgende:
die msgbox kent het :)
ff de syntax zoeken
Gewoon:
code:
1
MsgBox "String"

Doe ik ook altijd als ik iets wil uittesten in VB, maar ik gebruik VB de laatste tijd niet zo vaak meer.

edit: Er zijn wel meer attributen, maar die zijn voor debuggen niet zo snel nodig. En MsgBox werkt bijna altijd in VB, zelfs in ASP. Dan verschijnt er op de server een MsgBox en de pagina gaat pas verder als de user aan de server-side kant op OK geklikt heeft... :+

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
volgende :)
Afbeeldingslocatie: http://www.xs4all.nl/~dennisvr/got/vb_screen3.jpg
met deze code
code:
1
MsgBox " | " & cmbuur.List(cmbuur.ListIndex) & " | " & cmbDag.ListIndex & " | " & cmbuur.ListIndex & " | " & txVak.Text & " | " & txDocent.Text, vbOKOnly

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
woei :)
als ik er tekst van maak krijg ik de waarden
Dag,Uur,Vak,Doc
[edit]
maar als ik er waarden aangeef nog geen invoer :??
* D2k debugt verder :)

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
MSDN:
Setting: -1
Description: (Default for ComboBox, DirListBox, and DriveListBox controls) Indicates no item is currently selected. For a ComboBox control, indicates the user has entered new text into the text box portion. For a DirListBox control, indicates theindex of the currentpath. For a DriveListBox control, indicates the index of the current drive when the control is created atrun time.
Er is dus niks geselecteerd, dus dan staat het op -1. Selecteer eens wat op het form... of gebruik gewoon de .Text-property ipv c.List(c.ListIndex) (in tegenstelling wat ik eerst zei, Text werkt wel gewoon bij Dropdowns).

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 19 februari 2002 21:43 schreef D2k het volgende:
woei :)
als ik er tekst van maak krijg ik de waarden
Dag,Uur,Vak,Doc
[edit]
maar als ik er waarden aangeef nog geen invoer :??
* D2k debugt verder :)
Dus als je Dag en dergelijke verandert, dan verschijnt er niets :?

Maar vertel eens wat meer over je database-connectie, ik ken die functie ExecSQL namelijk niet. Gebruik je ADO of... :?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
ik zal ff wat meer info geven :)
ik maak een db met
code:
1
2
3
4
5
6
7
8
9
10
11
  On Error Resume Next
  Set rs = CreateObject("ADOCE.Recordset.3.0")
  rs.Open "CREATE DATABASE '" & gDBFileSpec & "'"
  rs.Close
  Set rs = Nothing
  On Error GoTo 0
  
  If DBExists(gDBFileSpec) = True Then
    txtDB.Text = gDBFileSpec & " created!"
  End If
  ExecSQL "CREATE table TestTable (lesdag text,uur integer,vak text, docent text)", "TestTable created.", "Err: TestTable was not created."

en dan probeer ik dus met het formpje uit mijn eerste post info erin te proppen via
code:
1
2
3
4
5
6
7
8
9
10
Private Sub btInvoeren_Click()

  If connOpen = True Then
    MsgBox " | " & cmbuur.List(cmbuur.ListIndex) & " | " & cmbDag.Text & " | " & cmbuur.Text & " | " & txVak.Text & " | " & txDocent.Text, vbOKOnly
    ExecSQL "Insert into TestTable (lesdag,uur,vak,docent) VALUES (""" + cmbDag.ListIndex + """,""" + cmbuur.ListIndex + """,""" + txVak.Text + """,""" + txDocent.Text + """)", "TestTable created.", "Fout bij het invoeren"
    On Error GoTo 0
  End If
  
  connClose
End Sub

en dan mis ik hier denk ik een verbinding maak stukje?

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 19 februari 2002 21:52 schreef D2k het volgende:
en dan mis ik hier denk ik een verbinding maak stukje?
Elke keer wanneer je een verbinding met een database nodig hebt, moet je die aanmaken. Als dat gedurende je programma al gedaan is, dan is dat OK.

Maar die functie ExecSQL zit me nog niet echt helemaal lekker... Is dat een functie van VB of van jezelf?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op dinsdag 19 februari 2002 21:58 schreef elnino het volgende:
Elke keer wanneer je een verbinding met een database nodig hebt, moet je die aanmaken. Als dat gedurende je programma al gedaan is, dan is dat OK.
mooi :)
Maar die functie ExecSQL zit me nog niet echt helemaal lekker... Is dat een functie van VB of van jezelf?
komt hier vandaan
http://www.devbuzz.com/content/zinc_intro_ADOCE_databases_pg1.asp

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 19 februari 2002 22:00 schreef D2k het volgende:
komt hier vandaan
http://www.devbuzz.com/content/zinc_intro_ADOCE_databases_pg1.asp
Misschien is dat ook handig om de volgende keer te vermelden... Ik zat al op MSDN te zoeken naar ExecSQL...

Ik heb nu te weinig tijd om die functies grondig te doorzoeken, maar ik heb wel even een andere link over DB's in Windows CE:

http://www.wirelessdevnet.com/channels/pda/features/ado_ce.html (weliswaar geen SQL)

Succes er nog mee!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op dinsdag 19 februari 2002 22:09 schreef elnino het volgende:
Misschien is dat ook handig om de volgende keer te vermelden... Ik zat al op MSDN te zoeken naar ExecSQL...
ja kon het zelf ook al niet vinden op msdn :)
Ik heb nu te weinig tijd om die functies grondig te doorzoeken, maar ik heb wel even een andere link over DB's in Windows CE:

http://www.wirelessdevnet.com/channels/pda/features/ado_ce.html (weliswaar geen SQL)

Succes er nog mee!
tnx ik ga ff kijken

Doet iets met Cloud (MS/IBM)


  • grhmpf
  • Registratie: December 2000
  • Laatst online: 29-05-2022

grhmpf

Android <3

Misschien had je het al getest hoor, maar in normaal SQL mag je eigenlijk geen " gebruiken. MSSQL 7 staat het wel toe maar in 2000 en oracle mag het niet. Wellicht geldt dat ook voor de db die je gebruikt op die pocket pc. Dus ik zou in je query even bla = "val" vervangen door bla = 'val'.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
ok D2k vs VB dag2 :)
in de link van elnino staat het volgende
code:
1
2
3
4
5
6
7
8
9
10
'Add New Record
 rs.AddNew
 rs.Fields("fname").Value = "Robert"
 rs.Fields("lname").Value = "Smith"
 rs.Fields("company").Value = "The Cure"
 rs.Fields("address").Value = "London, England"
 rs.Flelds("phone").Value = "134551212"
 rs.Update
 rs.Close
 Set rs = Nothing

mijn code is dus
code:
1
2
3
4
5
6
7
8
9
rs2.Open "TestTable", conn, adOpenKeyset, adLockOptimistic
    rs2.AddNew
    rs2.Fields("lesdag").Value = "ma"
    rs2.Fields("uur").Value = "1"
    rs2.Fields("vak").Value = "tst"
    rs2.Fields("docent").Value = "DOC"
    rs2.Update
rs2.Close
Set rs2 = Nothing

maar dat levert geen errors op ergens?
maar ook geen nieuwe record?

* D2k begint er steeds minder van te snappen :)

Doet iets met Cloud (MS/IBM)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
  • Hoe maak je verbinding met je database? (Dus met CreateObject)
  • Heb je de dubbele quotes al vervangen door single quotes (edit: alleen voor SQL query's geldt dat, uiteraard)?
  • Waar komt die 'conn' vandaan in je code?
  • Schoon je code eens helemaal op, rewrite het eens volledig en gebruik dan niet verschillende code door elkaar.
Je moet dus eerst verbinding maken:
code:
1
2
3
4
 Dim rs 'Recordset
 Set rs = CreateObject("ADOCE.Recordset")
 rs.Open "Business", "\Contacts.cdb", adOpenKeyset, _
adLockOptimistic

De rs.Open-syntax werkt kort gezegd als volgt:

Open "tablenaam", "bron", adOpenKeyset, adLockOptimistic

En vervolgens dingen toevoegen:
code:
1
2
3
4
5
6
7
8
9
10
 'Add New Record
 rs.AddNew
 rs.Fields("fname").Value = "Robert"
 rs.Fields("lname").Value = "Smith"
 rs.Fields("company").Value = "The Cure"
 rs.Fields("address").Value = "London, England"
 rs.Flelds("phone").Value = "134551212"
 rs.Update
 rs.Close
 Set rs = Nothing

Maar waar je die conn in je code vandaan haalt :?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Wat dacht je hiervan

Private Sub btInvoeren_Click()
ExecSQL "Insert into TestTable (lesdag,uur,vak,docent)
VALUES ('" & cmbDag.Text & "', '" & cmbUur.Text & "', '" & txVak.Text & "', '" & txDocent.Text & "')",
"TestTable created.", "Fout bij het invoeren"
End Sub

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op woensdag 20 februari 2002 21:35 schreef robjanssen het volgende:
Wat dacht je hiervan

Private Sub btInvoeren_Click()
ExecSQL "Insert into TestTable (lesdag,uur,vak,docent)
VALUES ('" & cmbDag.Text & "', '" & cmbUur.Text & "', '" & txVak.Text & "', '" & txDocent.Text & "')",
"TestTable created.", "Fout bij het invoeren"
End Sub
ok als je een lekker wijf was zou ik je zoenen!!!!!!!!!!!!!!!!
dit werkt dus
ik kan eeeeeeindelijk verder

* D2k is blij :P

Doet iets met Cloud (MS/IBM)

Pagina: 1