Hallo,
ik ben al een tijdje bezig met het mijzelf aanleren van de taal asp.net; en nu ben ik dan eindelijk (voor de eerste keer) door het boek basiscursus asp.net van Peter Kassenaar heen. Nu ik echter alleen zelf iets wil maken kom ik met dat boek en het internet in mijn hand, niet echt erg ver.
Ik heb opzich wel vrij veel ervaring met php/mysql, dus dacht dat asp.net vrij snel aan te leren zou zijn, maar dat valt me tot nu toe enigszins tegen (maar miss. gaat het straks heel snel).
Wat ik wil is werken met een .mdb bestand als database, en simpel via een webformuliertje (die ik met webcontrols heb gemaakt) deze .mdb file vullen. Moet niet moeilijk zijn hierover staat voldoende op het internet. Dat klopt en dat lukt me dus ook wel. Wat me alleen niet lukt is zorgen dat de autonummering (zoals dat in access heet) en zoals ik dat gewend ben in phpMyAdmin (auto_increment) werkt. Ik heb dus het formulier, en daarvoor heb ik de volgende procedure geschreven...
Het gaat even om de INSERT query.
Eerst even mijn database model: erg simpel (nog): alle velden zijn van het type tekst, behalve het veld 'id'. Die is van het type AutoNummering (zoals ik dat in Access XP heb ingesteld). Dat bestand heb ik naar de database map geupload, en dan beginnen de problemen.
in php icm mysql zou ik in mijn insert query het veld voor auto_increment leeglaten. SQL zorgt er dan zelf voor dat dit veld een waarde krijgt; namelijk 1 nummer hoger dan het vorige record. In de geposte query heb ik als laatste veld een willekeurig getal (55555) ingevuld. Als ik dat doe, gaat de insert query 1x (en niet vaker) volledig goed. Formulierteksten komen door, en het id ook. Laat ik het ID in de scriptcode leeg (ook bij een lege database of bij een database met 1 of meerdere records) dan krijg ik een foutmelding.
foutmelding die ik dan krijg
Die 55555 laat ik dan weg en is het veld id dus als '' ingevuld (twee hoge komma's).
Mijn vraag is simpel: hoe zorg ik dat de AutoNummering werkt (zonder select query van wat het hoogste id is van een record uit de tabel en 1 op te tellen). Of kan dat niet?
Nu moet ik telkens 'hardcoded' het id veranderen anders geeft het script bij de 2e insert van het formulier, de genoemde foutmelding.
Graag hoor ik uw reacties over wat ik over het hoofd zie dan wel anders moet doen.
Goede verwijzingen naar documentatie over dit probleem (dat ik relatief schaars vind op het internet) is meer dan welkom.
ik ben al een tijdje bezig met het mijzelf aanleren van de taal asp.net; en nu ben ik dan eindelijk (voor de eerste keer) door het boek basiscursus asp.net van Peter Kassenaar heen. Nu ik echter alleen zelf iets wil maken kom ik met dat boek en het internet in mijn hand, niet echt erg ver.
Ik heb opzich wel vrij veel ervaring met php/mysql, dus dacht dat asp.net vrij snel aan te leren zou zijn, maar dat valt me tot nu toe enigszins tegen (maar miss. gaat het straks heel snel).
Wat ik wil is werken met een .mdb bestand als database, en simpel via een webformuliertje (die ik met webcontrols heb gemaakt) deze .mdb file vullen. Moet niet moeilijk zijn hierover staat voldoende op het internet. Dat klopt en dat lukt me dus ook wel. Wat me alleen niet lukt is zorgen dat de autonummering (zoals dat in access heet) en zoals ik dat gewend ben in phpMyAdmin (auto_increment) werkt. Ik heb dus het formulier, en daarvoor heb ik de volgende procedure geschreven...
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <%@ Page Language="VB" debug="true" validateRequest=false%> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> Sub Button1_Click(Byval S As Object, ByVal e As EventArgs) Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data source=d:\www\happietariagronin.nl\database\rr.mdb;" title.Text= Replace(title.Text, "'", "''") Dim cmd As New OleDbCommand("INSERT INTO researchreport VALUES('" & title.Text & "','" & researchers.Text & "','" & shortdescription.Text & "','" & practicalrelevance.Text & "','" & timing.Text & "','" & status.Text & "','" & output.Text & "','" & cooperation.Text & "','55555')", New OleDbConnection(strConn)) cmd.Connection.Open() cmd.ExecuteNonQuery() cmd.Connection.Close() End Sub </script> |
Het gaat even om de INSERT query.
Eerst even mijn database model: erg simpel (nog): alle velden zijn van het type tekst, behalve het veld 'id'. Die is van het type AutoNummering (zoals ik dat in Access XP heb ingesteld). Dat bestand heb ik naar de database map geupload, en dan beginnen de problemen.
in php icm mysql zou ik in mijn insert query het veld voor auto_increment leeglaten. SQL zorgt er dan zelf voor dat dit veld een waarde krijgt; namelijk 1 nummer hoger dan het vorige record. In de geposte query heb ik als laatste veld een willekeurig getal (55555) ingevuld. Als ik dat doe, gaat de insert query 1x (en niet vaker) volledig goed. Formulierteksten komen door, en het id ook. Laat ik het ID in de scriptcode leeg (ook bij een lege database of bij een database met 1 of meerdere records) dan krijg ik een foutmelding.
foutmelding die ik dan krijg
code:
1
2
3
4
| Data type mismatch in criteria expression. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Data.OleDb.OleDbException: Data type mismatch in criteria expression. |
Die 55555 laat ik dan weg en is het veld id dus als '' ingevuld (twee hoge komma's).
Mijn vraag is simpel: hoe zorg ik dat de AutoNummering werkt (zonder select query van wat het hoogste id is van een record uit de tabel en 1 op te tellen). Of kan dat niet?
Nu moet ik telkens 'hardcoded' het id veranderen anders geeft het script bij de 2e insert van het formulier, de genoemde foutmelding.
Graag hoor ik uw reacties over wat ik over het hoofd zie dan wel anders moet doen.
Goede verwijzingen naar documentatie over dit probleem (dat ik relatief schaars vind op het internet) is meer dan welkom.
[ Voor 8% gewijzigd door Verwijderd op 16-01-2005 00:19 ]
