[ASP] DW MX Unicode wil niet correct werken

Pagina: 1
Acties:

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
Ik wil graag unicode karakters in een MS SQL 2000 DB zetten middels een ASP form gemaakt met Dreamweaver MX.

Echter wat ik ook probeer, slechts het eerste veld wordt als UNICODE opgeslagen, de overige velden niet :( Ik heb een 'N toegevoegd zoals gesuggereerd op verschillende websites, geen succes.

Heeft iemand een aanpassing voor de relevante code?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "CreditCheckForm") Then

  MM_editConnection = MM_CCConn_STRING
  MM_editTable = "creditcheckuser.Data"
  MM_editRedirectUrl = "success.asp"
  MM_fieldsStr  = "NameRequestor|value|UnitRequestor|value|PhoneRequestor|value|EmailRequestor|value|Entity|value|CombDate|value|CustomerName|value|CustomerLegalForm|value|CustomerStreet|value|CustomerCity|value|CustomerPostalCode|value|CustomerCountry|value|CompanyRegNumber|value|CompanyVATNumber|value|SalesChannel|value|SalesSector|value|ExistingCustomer|value|CurrentServices|value|CurrentServices2|value|CurrentServices3|value|CurrentServices4|value|CurrentCurrency|value|CurrentMonthlyRevenue|value|CurrentSecurities|value|WhichCurrentSecurity|value|BTSupplier|value|LiabilitiesCurrency|value|Liabilities|value|NewServices|value|NewServices2|value|NewServices3|value|NewServices4|value|ReplacesExisting|value|ReplacesWhichServices|value|NewCurrency|value|InstallationCosts|value|ExpectedMonthlyRecurringCharges|value|ExpectedMonthlyNonRecurringCharges|value|BillingPeriod|value|BillingCycle|value|DeferredPaymentTerm|value|DeferredPaymentTermSpec|value|StandardTC|value|GUID2|value|RequestorLang|value|Status|value"
  MM_columnsStr = "NameRequestor|',none,''|UnitRequestor|',none,''|PhoneRequestor|',none,''|EmailRequestor|',none,''|Entity|none,none,NULL|DateRequest|',none,NULL|CustomerName|',none,''|CustomerLegalForm|',none,''|CustomerStreet|',none,''|CustomerCity|',none,''|CustomerPostalCode|',none,''|CustomerCountry|',none,''|CompanyRegNumber|',none,''|CompanyVATNumber|',none,''|SalesChannel|none,none,NULL|SalesSector|none,none,NULL|ExistingCustomer|none,none,NULL|CurrentServices|none,none,NULL|CurrentServices2|none,none,NULL|CurrentServices3|none,none,NULL|CurrentServices4|',none,''|CurrentCurrency|none,none,NULL|CurrentMonthlyRevenue|none,none,NULL|CurrentSecurity|none,none,NULL|WhichCurrentSecurity|none,none,NULL|BTSupplier|none,none,NULL|LiabilitiesCurrency|none,none,NULL|Liabilities|none,none,NULL|NewServices|none,none,NULL|NewServices2|none,none,NULL|NewServices3|none,none,NULL|NewServices4|',none,''|ReplacesExisting|none,none,NULL|ReplacesWhichServices|none,none,NULL|NewCurrency|none,none,NULL|InstallationCosts|none,none,NULL|ExpectedMonthlyRecurringCharges|none,none,NULL|ExpectedMonthlyNonRecurringCharges|none,none,NULL|BillingPeriod|none,none,NULL|BillingCycle|none,none,NULL|DeferrredPaymentTerm|none,none,NULL|DeferrredPaymentTermSpec|',none,''|StandardTC|none,none,NULL|GUID2|',none,''|RequestorLang|none,none,NULL|Status|none,none,NULL"

  ' 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

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 (N" & 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

    session("GUID3")=Request.Form("GUID2")

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>

[ Voor 11% gewijzigd door Hermanvh op 09-09-2005 17:01 ]

webOS all the way!


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Is het datatype van de overige velden wel correct?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Hermanvh schreef op vrijdag 09 september 2005 @ 17:01:
Heeft iemand een aanpassing voor de relevante code?
Noem je alle code die je gepost hebt relevant? Probeer bij een eventueel volgend topic eerst je probleem terug te brengen naar een paar regels; het lijkt me heel sterk dat 125 regels code allemaal relevant zijn voor je probleem. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
P_de_B schreef op vrijdag 09 september 2005 @ 17:03:
Is het datatype van de overige velden wel correct?
Ja, textvelden zijn NVARCHAR in MS SQL 2000 :)
-NMe- schreef op vrijdag 09 september 2005 @ 17:08:
[...]

Noem je alle code die je gepost hebt relevant? Probeer bij een eventueel volgend topic eerst je probleem terug te brengen naar een paar regels; het lijkt me heel sterk dat 125 regels code allemaal relevant zijn voor je probleem. ;)
Ehm dit is het hele INSERT statement incl. de velden die vanaf het form gehaald worden, misschien een beetje teveel, maar wel allemaal nodig om het te kunnen oplossen m.i. ;)

webOS all the way!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Dit is niet je INSERT statement, dit is de code die je statement opbouwt. Je daadwerkelijke INSERT statement is veel kleiner en veel sneller te doorzien, dus het zou handiger zijn geweest als je alleen dat of op zijn minst ook je daadwerkelijke query zou posten. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
-NMe- schreef op vrijdag 09 september 2005 @ 17:38:
Dit is niet je INSERT statement, dit is de code die je statement opbouwt. Je daadwerkelijke INSERT statement is veel kleiner en veel sneller te doorzien, dus het zou handiger zijn geweest als je alleen dat of op zijn minst ook je daadwerkelijke query zou posten. ;)
Je hebt gelijkt ;) Hier wordt de INSERT statement opgebouwd... Het is een lange week geweest, sorry ;)

webOS all the way!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Hermanvh schreef op vrijdag 09 september 2005 @ 17:50:
Je hebt gelijkt ;) Hier wordt de INSERT statement opgebouwd... Het is een lange week geweest, sorry ;)
Ik merkte het, je snapte mijn hint niet. :+ Kun je de query die je daadwerkelijk uitvoert ook even posten? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
-NMe- schreef op vrijdag 09 september 2005 @ 18:27:
[...]

Ik merkte het, je snapte mijn hint niet. :+ Kun je de query die je daadwerkelijk uitvoert ook even posten? :)
Ik heb hier geen SQL server thuis en helaas geen toegang tot de gegevens op m'n werk :( Met 1 veld werkt het wel. Het lijkt dus op de lus die erin zit om de values aan elkaar te knopen, alleen bij de eerste 'N voor Unicode ervoor zet :S

Ik zou natuurlijk een hidden field als eerste veld kunnen maken op het formulier en dan d.m.v. VBScript of Javascript daar de waarde van het benodigde veld in kunnen zetten (CustomerName) en dit dan in de DB laten zetten, maar dat is een nasty work-around ;)

webOS all the way!


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
Toch maar even zonder DB dan (Response.Write () is altijd handig :))
code:
1
2
insert into (NameRequestor,UnitRequestor,PhoneRequestor,EmailRequestor,Entity,DateRequest,CustomerName,CustomerLegalForm,CustomerStreet,CustomerCity,CustomerPostalCode,CustomerCountry,CompanyRegNumber,CompanyVATNumber,SalesChannel,SalesSector,ExistingCustomer,CurrentServices,CurrentServices2,CurrentServices3,CurrentServices4,CurrentCurrency,CurrentMonthlyRevenue,CurrentSecurity,WhichCurrentSecurity,BTSupplier,LiabilitiesCurrency,Liabilities,NewServices,NewServices2,NewServices3,NewServices4,ReplacesExisting,ReplacesWhichServices,NewCurrency,InstallationCosts,ExpectedMonthlyRecurringCharges,ExpectedMonthlyNonRecurringCharges,BillingPeriod,BillingCycle,DeferrredPaymentTerm,DeferrredPaymentTermSpec,StandardTC,GUID2,RequestorLang,Status) 
values (N'Herman','1234','1234','1234',NULL,NULL,'Test','','','','','','','',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,'',NULL,1)

Alleen de eerste wordt dus als 'N (Unicode) gesubmit :?

[ Voor 30% gewijzigd door Hermanvh op 09-09-2005 20:08 ]

webOS all the way!


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je ziet nu wat er verkeerd gaat, het is dan een kwestie van debuggen. Loop rustig door je code heen en probeer te zien waar het fout gaat. Debuggen is iets wat je echt moet leren, dus je kunt het beste direct maar beginnen :)

Debuggen: hoe doe ik dat?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
P_de_B schreef op vrijdag 09 september 2005 @ 21:26:
Je ziet nu wat er verkeerd gaat, het is dan een kwestie van debuggen. Loop rustig door je code heen en probeer te zien waar het fout gaat. Debuggen is iets wat je echt moet leren, dus je kunt het beste direct maar beginnen :)

Debuggen: hoe doe ik dat?
Ik kan wel debuggen, dat is het probleem niet ;) Alleen doordat dit een array is, krijg ik het niet voor elkaar om de textvelden te prefixen met N. Ik heb al het nodige geprobeerd, maar weinig succes :(

webOS all the way!


Verwijderd

ASP:
1
MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (N" & MM_dbValues & ")"

Hier moet je de ipv MM_dbValues iets anders neerzetten. Schrijf zelf eens een stukje code en post dat hier, dan helpen wij je als je vast komt te zitten.

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
Verwijderd schreef op vrijdag 09 september 2005 @ 23:23:
ASP:
1
MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (N" & MM_dbValues & ")"

Hier moet je de ipv MM_dbValues iets anders neerzetten. Schrijf zelf eens een stukje code en post dat hier, dan helpen wij je als je vast komt te zitten.
Ik heb nu het volgende gedaan:
code:
1
MM_dbValues = MM_dbValues & ","

Heb ik vervangen door:
code:
1
MM_dbValues = MM_dbValues & ",N"

Ik ga maandag testen of het zo ook goed gaat met numerieke waarden. Ik heb ook SQL Server 2005 (testversie van MS) geïnstalleerd, dus ik kan ook een kopie van de DB maken om het thuis te testen :)

webOS all the way!


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
Helaas werkt dit niet omdat hij zijn numerieke waardes niet als Unicode kan opslaan (op zich wel logisch ook) :(

webOS all the way!


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:30

TeeDee

CQB 241

Je zou kunnen checken of het numeriek is of niet.
Zo ja, dan zet je er geen N voor.

Op http://msdn.microsoft.com...6/html/vtorifunctions.asp staan functies die kan je gebruiken om te testen.

[ Voor 9% gewijzigd door TeeDee op 13-09-2005 08:57 ]

Heart..pumps blood.Has nothing to do with emotion! Bored

Pagina: 1