Hallo tweakers,
ik programmeer nu een paar maanden in visual basic.net, voor een webapplicatie dat met een accessdatabase moet kunnen communiceren, en dacht dat ik al aardig door had hoe e.e.a. werkte, maar nu loop ik toch weer tegen iets aan wat ik absoluut niet begrijp. Daarom wil ik jullie hulp vragen, want speurtochten op google.nl, de search e.d. helpen me niet verder; evenmin als mijn eigen pogingen om dit probleem te doorgronden.
Wat is het probleem?
Ik wil aan een eigengeschreven bestaand script, dat via webforms iets kan toevoegen aan de database, een veld toevoegen (INSERT query dus). Voorwaar geen lastige klus, dacht ik vanochtend rond 12 uur; en ja het is echt stukken later nu.
De foutmelding die ik krijg: The INSERT INTO statement contains the following unknown field name: 'isbnnummer'. Make sure you have typed the name correctly, and try the operation again.
isbnnummer is precies het veld, dat ik heb toegevoegd aan de database (ms access database overigens, dus een .mdb bestand in een database map van de website).
Ik heb om het probleem op te lossen een 'testscript' gemaakt (want zoiets moet ik kunnen; ik heb het eerder gedaan), en nu blijkt dat ik in mijn testscript, waarin ik alles hardcoded invoer (in de query) WEL toevoegingen kan maken aan de database tabel, en in het ingewikkeldere script, kan dat niet.
Ik gebruik PRECIES dezelfde query, en heb alles hardcoded (om te testen) ingevoerd in de insert query, maar toch lukt het bij het testscript wel, en bij de andere niet.
Wat gaat er fout?
Ik heb aan de volgende dingen gedacht:
1: wat het meest voor de hand ligt: de naam die ik heb toegevoegd: isbnnummer bevat een spatie, typefout oid in ofwel het script, of in de database. Is NIET het geval.
2: de naam is een 'reserved word', waardoor de database het niet pikt. >>lijkt me niet logisch, en om dit uit te sluiten heb ik heel aparte namen geprobeerd, wat echt niet een gereserveerd woord kan zijn. Dat lijkt me dus niet de oorzaak
3: ik heb gedacht aan het punt dat ik in de insert query, het veld op dezelfde plek moet zetten als hij in de database is toegevoegd. Ik heb het veld isbnnummer achteraan de database toegevoegd, en in het script, staat hij ook achteraan (zowel bij de veldnamen als bij de values)
4: datatype klopt sowieso, staat op tekst, en is ook als tekst in de insert query weergegeven
Verder weet ik niet waar ik aan moet denken. Het meest gekke is nog dat het testscript wel werkt, en het 'grote script', waar het in moet komen te staan, niet. Kan iemand mij zeggen waar ik NIET aan heb gedacht? Of wat ik nu over het hoofd zie?
Ik zie het echt niet....
Het 'testscriptje' is vrij kort, dat andere is 'mega lang', maar ik zet in het commentaar duidelijk om welk stukje het gaat.
Het gaat om de procedure Sub insertboek; daar staat zegmaar het deel wat in het testscript wel lukt, en in het hele deel, niet.
Verder is het script zo opgebouwd dat het 6 panelen heeft.
1 om aan te geven wat je wilt invoeren (5 opties) (autopostback)
5 overige panelen om het invoerformulier weer te geven
Verder hebben alle formulieren een eigen 'onclick' naam, met bij het boek de naam onclick="insertboek" zodat die procedure wordt aangeroepen.
Ook is er nog een preview ingebouwd etcetera; maar deze info om even uit te leggen waarom het zo'n enorm stuk tekst is.
Het gaat dus om eenklein stukje van de enorme lap, dat is sub insertboek en om het formulier misschien, maar ik moet wel het hele stuk posten, omdat de procedure zelf (in het testscript) gewoon werkt. Ik zou niet weten wta er verstorend werkt.
Iemand ideeen?
Code van een werkend script (gewoon ff insert in de pageload gegooid als test...)
ik programmeer nu een paar maanden in visual basic.net, voor een webapplicatie dat met een accessdatabase moet kunnen communiceren, en dacht dat ik al aardig door had hoe e.e.a. werkte, maar nu loop ik toch weer tegen iets aan wat ik absoluut niet begrijp. Daarom wil ik jullie hulp vragen, want speurtochten op google.nl, de search e.d. helpen me niet verder; evenmin als mijn eigen pogingen om dit probleem te doorgronden.
Wat is het probleem?
Ik wil aan een eigengeschreven bestaand script, dat via webforms iets kan toevoegen aan de database, een veld toevoegen (INSERT query dus). Voorwaar geen lastige klus, dacht ik vanochtend rond 12 uur; en ja het is echt stukken later nu.
De foutmelding die ik krijg: The INSERT INTO statement contains the following unknown field name: 'isbnnummer'. Make sure you have typed the name correctly, and try the operation again.
isbnnummer is precies het veld, dat ik heb toegevoegd aan de database (ms access database overigens, dus een .mdb bestand in een database map van de website).
Ik heb om het probleem op te lossen een 'testscript' gemaakt (want zoiets moet ik kunnen; ik heb het eerder gedaan), en nu blijkt dat ik in mijn testscript, waarin ik alles hardcoded invoer (in de query) WEL toevoegingen kan maken aan de database tabel, en in het ingewikkeldere script, kan dat niet.
Ik gebruik PRECIES dezelfde query, en heb alles hardcoded (om te testen) ingevoerd in de insert query, maar toch lukt het bij het testscript wel, en bij de andere niet.
Wat gaat er fout?
Ik heb aan de volgende dingen gedacht:
1: wat het meest voor de hand ligt: de naam die ik heb toegevoegd: isbnnummer bevat een spatie, typefout oid in ofwel het script, of in de database. Is NIET het geval.
2: de naam is een 'reserved word', waardoor de database het niet pikt. >>lijkt me niet logisch, en om dit uit te sluiten heb ik heel aparte namen geprobeerd, wat echt niet een gereserveerd woord kan zijn. Dat lijkt me dus niet de oorzaak
3: ik heb gedacht aan het punt dat ik in de insert query, het veld op dezelfde plek moet zetten als hij in de database is toegevoegd. Ik heb het veld isbnnummer achteraan de database toegevoegd, en in het script, staat hij ook achteraan (zowel bij de veldnamen als bij de values)
4: datatype klopt sowieso, staat op tekst, en is ook als tekst in de insert query weergegeven
Verder weet ik niet waar ik aan moet denken. Het meest gekke is nog dat het testscript wel werkt, en het 'grote script', waar het in moet komen te staan, niet. Kan iemand mij zeggen waar ik NIET aan heb gedacht? Of wat ik nu over het hoofd zie?
Ik zie het echt niet....
Het 'testscriptje' is vrij kort, dat andere is 'mega lang', maar ik zet in het commentaar duidelijk om welk stukje het gaat.
Het gaat om de procedure Sub insertboek; daar staat zegmaar het deel wat in het testscript wel lukt, en in het hele deel, niet.
Verder is het script zo opgebouwd dat het 6 panelen heeft.
1 om aan te geven wat je wilt invoeren (5 opties) (autopostback)
5 overige panelen om het invoerformulier weer te geven
Verder hebben alle formulieren een eigen 'onclick' naam, met bij het boek de naam onclick="insertboek" zodat die procedure wordt aangeroepen.
Ook is er nog een preview ingebouwd etcetera; maar deze info om even uit te leggen waarom het zo'n enorm stuk tekst is.
Het gaat dus om eenklein stukje van de enorme lap, dat is sub insertboek en om het formulier misschien, maar ik moet wel het hele stuk posten, omdat de procedure zelf (in het testscript) gewoon werkt. Ik zou niet weten wta er verstorend werkt.
Iemand ideeen?
Code van een werkend script (gewoon ff insert in de pageload gegooid als test...)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <%@ Page Language="VB" debug="true" validateRequest=false%> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> Dim ConResearchReport AS OledbConnection Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data source=d:\www\WEBSAAIT.nl\database\researchreport.mdb;" Dim OledbString AS String Dim dtrResearchReport AS OledbDataReader Dim cmdInsertArticles As OledbCommand Sub Page_load() ConResearchreport = New OledbConnection(ConnectionString) OledbString = "INSERT INTO publications (auteurs, titel, uitgeverij, plaatsuitgeverij, paginanrs, jaartal, soortpublicatie, categorie, isbnnummer) VALUES ('auteurs', 'titel', 'uitgeverij', 'plaatsuitgeverij', 3, 2004, 3, 1, 2)" cmdInsertArticles = New OledbCommand(OledbString, ConResearchReport) conResearchReport.open() cmdInsertArticles.ExecuteNonQuery() conResearchReport.Close() end sub </script> |
[ Voor 200% gewijzigd door Verwijderd op 30-03-2005 17:15 ]