Toon posts:

[VB .NET] INSERT query lukt niet in groot script

Pagina: 1
Acties:

Verwijderd

Topicstarter
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...)
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 ]


Verwijderd

Topicstarter
Het script waarin het niet werkt, is erg lang, en kan hier ivm beperkingen niet gepost worden...

Daarom hier een link waar het te bekijken is
http://www.rpostma.com/insert.php

Ik hoop dat iemand er toch naar wil kijken, hoewel het misschien geen plezierig werkje is. Ik heb volgens mij alle mogelijke dingen onderzocht, maar vergeet kennelijk toch nog iets cruciaals...

Ik weet niet of php een functie heeft voor colorcoding van vbscript. Daarom nu helaas geen colorcoding...

[ Voor 255% gewijzigd door Verwijderd op 30-03-2005 17:26 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
Ben je wel zeker dat je connectie-string naar de juiste DB wijst ? Dwz, de DB waar je dat extra veld in die tabel hebt toegevoegd ?
Echter, in je post zeg je dat isbnnummer van het type tekst is, waarom zet je dan geen quotes rond die 2 in je values - list ?

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Ik zou best willen kijken, maar ik krijg de pagina niet te zien... (page could not be displayed)

Heb je al eens een keer de verschillende variabelen naar het scherm gestuurd zodat je kunt controleren of er ook wel de waardes inzitten die je verwacht? Welke foutmelding(en) krijg je? Hoe insert je de gegevens? String concattenatie, of parameterized queries? Allemaal belangrijke info als je verder wil komen.

Verder geef je aan dat het om een klein stuk van de grote lap code gaat... Waarom post je dan dat kleine stuk niet?

[ Voor 3% gewijzigd door OZ-Gump op 30-03-2005 17:37 ]

My personal website


Verwijderd

Topicstarter
Sorry ik had ff 2 problemen tussendoor;
1 server offline waar ik naar verwees
2: weergave van mijn script (hij voerde html uit)

hier een goed werkende link
http://www.business-development.org/addpublication.php

Verder:
er is 1 database, en alles werkt wanneer ik in het grote script, NIET het veld toevoeg. Dus uit de veldnamen en values namen, de waarden verwijder...

Het gaat dus om de procedure sub insertboek() die niet lukt. Het leek me nodig om het hele script te laten zien, want afgezonderd werkt het wel.

Verder heeft whoami gelijk dat er strings horen bij de value, maar ik heb ook al nummeriek geprobeerd en daar is dat script nog van. Ik heb net nog even getest om de value (die nu dus integer is) te vervangen door 'waarde' (dus wel zoals het hoort met enkele quotes).


Verder: ik gebruik in principe parametrized queries. Maar omdat dit stukje niet in een groot script wil werken, heb ik e.e.a. hardcoded ingevoerd, om daarna dit om te zetten...

#edit
Ik zie dat ik nog niet volledig heb gereageerd
"Verder geef je aan dat het om een klein stuk van de grote lap code gaat... Waarom post je dan dat kleine stuk niet?"

Het kleine stuk (de procedure die niet lukt na het indrukken van de button om een boek in te voeren) kan ik in een aparte file wel aan de praat krijgen. Dat is het stukje in de openingspost. Als ik dan dat overzet (dezelfde query) naar het grote geheel, werkt het niet meer.

[ Voor 68% gewijzigd door Verwijderd op 30-03-2005 17:48 ]


Verwijderd

Topicstarter
Ok ik ga me even heel diep schamen.
De tip van de juiste connectiestring was zo gek nog niet...

(ivm een oude versie van .net (1.0) had ik om e.e.a. te testen, een db in de map van de scripts gezet); en kennelijk 1 script niet terug aangepast.

De hele tijd heb ik vandaag dus niet de connectiestring ingekeken maar dat was het.

:shame:
Pagina: 1