02. januar 2004 - 01:22Der er
19 kommentarer og 1 løsning
hvordan execute en insert (dreamwaver MX kode)?
Jeg har et dokument som poster til et andet dokument som herefter skal performe et insert I en database. Jeg vil gerne benytte dreamweaver MX hele vejen. Hvordan kan jeg execute følgende i dokumentet jeg kalder?
' *** Insert Record: set variables If (CStr(Request("MM_insert")) = "form1") Then
og længere nede kommer:
If (CStr(Request("MM_insert")) <> "") Then ' create the sql insert statement
Hvordan kan jeg exucute uden at skulle lave en submit? Jeg har fundet ud af at returnere til forgående dokument igen. Jeg skal helst benytte dreamweaver til at lave koden med. Har du en ide?
Hmm... du vil gerne indsæt nogle værdier, som skal hentes fra en form, uden at submitte? Det kan du ikke. Der skal enten submittes med POST (form) eller GET (url).
Det er submit der sende værdierne af felterne, videre til doc2.asp. Med POST sendes de via formen. Hvis du i stedet for POST bruger GET, vil urlen blive til:
alt dette ved jeg godt. Det er sikkert bare at jeg fjerne den linie som hedder: If (CStr(Request("MM_insert")) = "form1") Then fra det default insert script som Dreamweaver generere.
' create the MM_fields and MM_columns arrays MM_fields = Split(MM_fieldsStr, "|") MM_columns = Split(MM_columnsStr, "|")
' set the form values For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i))) Next
' append the query string to the redirect URL If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString Else MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString End If End If
'End If %> <% ' *** Insert Record: construct a sql insert statement and execute it
Dim MM_tableValues Dim MM_dbValues
' UDKOMMENTERES 'If (CStr(Request("MM_insert")) <> "") Then
' create the sql insert statement MM_tableValues = "" MM_dbValues = "" For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_formVal = MM_fields(MM_i+1) MM_typeArray = Split(MM_columns(MM_i+1),",") MM_delim = MM_typeArray(0) If (MM_delim = "none") Then MM_delim = "" MM_altVal = MM_typeArray(1) If (MM_altVal = "none") Then MM_altVal = "" MM_emptyVal = MM_typeArray(2) If (MM_emptyVal = "none") Then MM_emptyVal = "" If (MM_formVal = "") Then MM_formVal = MM_emptyVal Else If (MM_altVal <> "") Then MM_formVal = MM_altVal ElseIf (MM_delim = "'") Then ' escape quotes MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'" Else MM_formVal = MM_delim + MM_formVal + MM_delim End If End If If (MM_i <> LBound(MM_fields)) Then MM_tableValues = MM_tableValues & "," MM_dbValues = MM_dbValues & "," End If MM_tableValues = MM_tableValues & MM_columns(MM_i) MM_dbValues = MM_dbValues & MM_formVal Next MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"
If (Not MM_abortEdit) Then ' execute the insert Set MM_editCmd = Server.CreateObject("ADODB.Command") MM_editCmd.ActiveConnection = MM_editConnection MM_editCmd.CommandText = MM_editQuery MM_editCmd.Execute MM_editCmd.ActiveConnection.Close
If (MM_editRedirectUrl <> "") Then Response.Redirect("sp.asp?gruppe_id="&(CINT(request("gruppe_id")+1))) End If End If
'End If %> <% Dim rs_sporgsmaal__MMColParam rs_sporgsmaal__MMColParam = "1" If (Request.QueryString("gruppe_id") <> "") Then rs_sporgsmaal__MMColParam = Request.QueryString("gruppe_id") End If %> <% Dim rs_sporgsmaal Dim rs_sporgsmaal_numRows
1) Normalt hedder den: "insert into TABELNAVN (FELTNAVN1, FELTNAVN2, osv..) values('VÆRDI1', 'VÆRDI2', 'VÆRDI osv..' )"
Dvs, det skal være noget i stil med: MM_dbValues = "'" & MM_dbValues & "',"
Men du skal lige huske, at variablen skal ende med "'". Den må ikke ende med ",".
Jeg mener at fejlen "Number of query values and destination fields are not the same." betyder det antallet af felterne i "FELTNAVN" og værdierne i VÆRDI, ikke er den samme. De skal de være.
F.eks.: 3 felter og 3 værdier.. 47 felter og 47 værdier.
2) Det du skal gøre nu, er at skrive: response.write "SQL: " & MM_editQuery ' udskriver indholset af MM_editQuery response.end ' stopper afviklingen af kode
Kig godt på det den skriver efter "SQL:". Du kan evt indsætte outputet her ind, så vi andre kankigge på det.
3) Denne linie er overflødig, fordi VBScript er standard script sproget i asp: <%@LANGUAGE="VBSCRIPT"%>
4) Man bør ALTID bruge Option Explicit som den første linie i asp dokumentet. Og derefter skal ALLE variablerne defineres/dimmes.
F.eks.:
<% Option Explicit %> <!--#include file="../Connections/pt.asp" --> <% dim MM_editQuery dim MM_dbValues ' osv...
Følg punkterne, og svar på de spm der måtte være. Har du selv spm, er du velkommen til at stille dem.
Kan du se fejlen? Du har 3 felter (sporgsmaal_id, bruger_id, resultat), med 5 værdier (1, 2, 3,1,''). Det er kun tekst der skal have '' udenom.. så det er rigtigt nok..
Men du har stadig 3 felter og 5 værdier.. Det skal du lige have rettet.. Prøv et eksempel hvor du allerede kender felterne og værdierne. Ret koden til, så det passer.
Jeg har også prøvet: MM_fieldsStr = "sporgsmaal_id|value|bruger_id|value|resultat|value" MM_columnsStr = "sporgsmaal_id|bruger_id|'resultat'" men der fremkommer samme fejl. Subscript out of range: '[number: 1]' /go_next.asp, line 88
Selvom jeg skriver Response.Buffer = False lige nede under Option Explicit giver den fejlen: Variable is undefined: 'MM_pt_STRING' E:\bla\bla\WEB\../Connections/pt.asp, line 2
Nu slår jeg det fra og modtager fejlen:
Subscript out of range: '[number: 1]' /go_next.asp, line 89
I linie 89 står der: MM_altVal = MM_typeArray(1)
TIDLIGERE STOD DER: MM_fieldsStr = "sporgsmaal_id|value|bruger_id|value|resultat|value" MM_columnsStr = "sporgsmaal_id|none,none,NULL|bruger_id|none,none,NULL|resultat|',none,''"
som gav: SQL: insert into resultater (sporgsmaal_id,bruger_id,resultat) values (1, 2, 3,1,'')
jeg kan ikke slette |none,none,NULL| uden at det giver en Subscript out of range: '[number: 1]' fejl!
Ang Option Explicit: Option Explicit kræver at du "dimmer" alle dine variabler. Dvs, du skal skrive:
dim variabelnavn
Hvis du f.eks dimmer "cykel" som variabel, og kommer til at skrive "ckel" (mangler "y"), vil den skrive:
Variable is undefined: 'ckel'
Så kan du hurtigt se, at der er noget galt..
Eksempel (formatet er "linienummer" + "kolon" + "koden"): 1: cykel = 1 2: ckel = cykel + 1 3: response.write "antallet af cykler: " & cykel
Hvis der ikke var stavefejl, skulle den skrive "antallet af cykler: 2". Men der er fejl, og Option Explicit vil fortælle dig, at der er fejl:
Variable is undefined: 'ckel' drev\sti\mappe\fil.asp, line 2
Så burde du hurtigt kunne fange stavefejlen "ckel"
Meget smart, ik'..? :-)
/theSurfer
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.