Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Uppdatera stora fält(PM) i databasen från formulär

Postades av 2007-03-19 00:52:26 - Nina Ringbom, i forum html/css, Tråden har 5 Kommentarer och lästs av 1219 personer

Hej
Jag har ett problem som jag undrar någon skulle vilja hjälpa mig att lösa. Jag har en accessdatabas som jag håller på och gör ett webformulär till så att jag kan uppdatera databasen över internet. Jag får upp alla fält som jag vill och de poster som innehåller något finns där. Dock har jag ett fält som kan innehålla tusentals tecken, (biografier) och dessa (fältet "historia") får jag bara upp typ den första raden i ett sådant fält där man kan ändra, sedan kommer resten av texten liksom utanför och man kan inte uppdatera det. Jag har försökt att lägga in "textarea" istället men det funkar inte alls. Kan man inte uppdatera stora fältmängder?
Så här ser koden ut som visar upp mina fält:

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/sys/db1.mdb")

Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM tabellen WHERE ID = " & Trim(Request.QueryString("adressID")) & " "
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>

<form method="POST" action="andra3.asp">

<tr><td><input type="hidden" name="AD" value="<% =Request.QueryString("adressID") %>"></td></tr>

<tr><td>Förnamn:<br><input type="text" size="30" name="fnamn" value="<% =RecSet("fnamn") %>"></td></tr>
<tr><td>Efternamn:<br><input type="text" size="30" name="enamn" value="<% =RecSet("enamn") %>"></td></tr>

<tr><td>Historia:<br><input type="text" size="50" name="historia" value="<% =RecSet("historia") %>"></td></tr>

<tr><td><input type="submit" value="Uppdatera"></td></tr>
</form>
<% RecSet.Close
Connect.Close %>

<tr><td>Redigera annan post!</td></tr>

Skulle bli jättetacksam för svar om någon har något ?

mvh Nina


Svara

Sv: Uppdatera stora fält(PM) i databasen från formulär

Postades av 2007-03-19 09:10:16 - Andreas Hillqvist

Server.HTMLencod är att rekomendera:

<%
    Set Connect = Server.CreateObject("ADODB.Connection")
    Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/sys/db1.mdb")

    Set RecSet = Server.CreateObject("ADODB.Recordset")
    Visa = "SELECT * FROM tabellen WHERE ID = " & CLng(Request.QueryString("adressID"))
    RecSet.Open Visa, Connect
%>
    <form method="POST" action="andra3.asp">
    <tr><td><input type="hidden" name="AD" value="<%=Request.QueryString("adressID") %>"></td></tr>
    <tr><td>Förnamn:<br><input type="text" size="30" name="fnamn" value="<%=Server.HTMLEncode(RecSet("fnamn")) %>"/></td></tr>
    <tr><td>Efternamn:<br><input type="text" size="30" name="enamn" value="<% =Server.HTMLEncode(RecSet("enamn")) %>"/></td></tr>
    <tr><td>Historia:<br><textarea size="50" name="historia">
     <% =Server.HTMLEncode(RecSet("historia")) %></textarea></td></tr>
   
    <tr><td><input type="submit" value="Uppdatera"/></td></tr>
    </form>
<%
    RecSet.Close
    Connect.Close
%>
   <tr><td>Redigera annan post!</td></tr>

Sedan undrar jag varför du inte använder JET drivrutinen för Access?


Svara

Sv:Uppdatera stora fält(PM) i databasen från formulär

Postades av 2007-03-19 10:20:30 - Nina Ringbom

Hej och tack för att du försöker hjälpa mig :-)
Nu när jag ändrat till din kod så får jag:

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'HTMLEncode'
/nina/historia/andra2.asp, line 26

På rad 26 står:

<tr><td>Yrke:<br><input type="text" size="30" name="yrke4" value="<% =Server.HTMLEncode(RecSet("yrke4")) %>"></td></tr>


Det är olika rader som visar fel beroende på vilka personer man klickar på. På de raderna, som här rad 26, är tom i databasen, vilken det skall vara. Verkar som den inte får upp allt om inte alla poster är ifyllda?

Koden är ju mycket längre än den jag visade här igår, jag tog ju bara ett litet exempel.

Lika bra att visa upp hela koden:

	<table align="center" border="1" width="450" class="vtext">
	<tr><td colspan="3">&nbsp;</td></tr>

<tr><td colspan="3" class="rubrik">Redigera person!</td></tr>

<%	    
    Set Connect = Server.CreateObject("ADODB.Connection")
    Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db1.mdb")
    Set RecSet = Server.CreateObject("ADODB.Recordset")
    Visa = "SELECT * FROM tabellen WHERE ID = " & CLng(Request.QueryString("adressID"))
    RecSet.Open Visa, Connect
%>    
    
	<form method="POST" action="andra3.asp">

	<tr><td><input type="hidden" name="AD" value="<% =Request.QueryString("adressID") %>"></td></tr>
	
	<tr><td>Förnamn:<br><input type="text" size="30" name="fnamn" value="<% =Server.HTMLEncode(RecSet("fnamn")) %>"></td></tr>
	<tr><td>Efternamn:<br><input type="text" size="30" name="enamn" value="<% =Server.HTMLEncode(RecSet("enamn")) %>"></td></tr>
	<tr><td>Yrke:<br><input type="text" size="30" name="yrke" value="<% =Server.HTMLEncode(RecSet("yrke")) %>"></td></tr>
	<tr><td>Yrke:<br><input type="text" size="30" name="yrke1" value="<% =Server.HTMLEncode(RecSet("yrke1")) %>"></td></tr>
	<tr><td>Yrke (lång text):<br><input type="text" size="60" name="yrke2" value="<% =Server.HTMLEncode(RecSet("yrke2")) %>"></td></tr>
	<tr><td>Yrke:<br><input type="text" size="30" name="yrke3" value="<% =Server.HTMLEncode(RecSet("yrke3")) %>"></td></tr>
	<tr><td>Yrke:<br><input type="text" size="30" name="yrke4" value="<% =Server.HTMLEncode(RecSet("yrke4")) %>"></td></tr>
	<tr><td>Yrke:<br><input type="text" size="30" name="yrke5" value="<% =Server.HTMLEncode(RecSet("yrke5")) %>"></td></tr>
	<tr><td>Foto:<br><input type="text" size="30" name="foto" value="<% =Server.HTMLEncode(RecSet("foto")) %>"></td></tr>
	<tr><td>Född (1701):<br><input type="text" size="30" name="fodd" value="<% =Server.HTMLEncode(RecSet("fodd")) %>"></td></tr>
	<tr><td>Död (1754):<br><input type="text" size="30" name="dod" value="<% =Server.HTMLEncode(RecSet("dod")) %>"></td></tr>
	<tr><td>Ålder (65 år):<br><input type="text" size="30" name="alder" value="<% =Server.HTMLEncode(RecSet("alder")) %>"></td></tr>
	<tr><td>Kort (1=ja, 2=nej):<br><input type="text" size="30" name="kort" value="<% =Server.HTMLEncode(RecSet("kort")) %>"></td></tr>
	<tr><td>Kön (k=kvinna):<br><input type="text" size="30" name="kon" value="<% =Server.HTMLEncode(RecSet("kon")) %>"></td></tr>
	<tr><td>Inlagd:<br><input type="text" size="30" name="inlagd" value="<% =Server.HTMLEncode(RecSet("inlagd")) %>"></td></tr>
	<tr><td>Ändrad:<br><input type="text" size="30" name="andrad" value="<% =Server.HTMLEncode(RecSet("andrad")) %>"></td></tr>
	<tr><td>Nation (sv=svensk):<br><input type="text" size="30" name="nation" value="<% =Server.HTMLEncode(RecSet("nation")) %>"></td></tr>
	<tr><td>Gravplats:<br><input type="text" size="30" name="gravplats" value="<% =Server.HTMLEncode(RecSet("gravplats")) %>"></td></tr>
	<tr><td>Källor:<br><input type="text" size="30" name="kallor" value="<% =Server.HTMLEncode(RecSet("kallor")) %>"></td></tr>
	<tr><td>Smeknamn:<br><input type="text" size="30" name="smeknamn" value="<% =Server.HTMLEncode(RecSet("smeknamn")) %>"></td></tr>
	<tr><td>Historia:<br><textarea name="historia"><% =Server.HTMLEncode(RecSet("historia")) %></textarea></td></tr>
	
	<tr><td><input type="submit" value="Uppdatera"></td></tr>
	</form>
<% RecSet.Close
	Connect.Close %>

   <tr><td>Redigera annan post!</td></tr>
</table>


Sen har jag inte en aning om vad JET är för något.
Jag är ingen programmerare utan skriver biografier om historiska personer.
Detta vill jag ha på en hemsida och jag gör så gott jag kan.

/Nina



PS. om jag tar bort alla rader den klagar på (som är tomma i db:n) så visas det upp klokt :-)
Men hur gör man då för att han inte skall bry sig om att det finns tomma fält i db:n?

Jag kom på det, jag skrev <% =Server.HTMLEncode("" & RecSet("historia")) %>


Svara

Sv: Uppdatera stora fält(PM) i databasen från formulär

Postades av 2007-03-19 11:24:34 - Andreas Hillqvist

Som du lyckades lista ut själv så är det det tomma värdena, null, vilket ger felmeddelande till Server.HTMLEncode(). Detta beror på att den förväntar sig en sträng.
För att en funktion skall kuna ta emot Null värden måste parametern vara av typen variant.

Om du använder &-operatorn så tvingar du en implecit konvertering av resultatet till en sträng.

Den tekniska förklaringen till din lösning. ;)


Svara

Sv:Uppdatera stora fält(PM) i databasen från formulär

Postades av 2007-03-19 12:22:34 - Nina Ringbom

Jättetack för förklaringen
Men vad var det där JET?


Svara

Sv: Uppdatera stora fält(PM) i databasen från formulär

Postades av 2007-03-19 13:19:37 - Andreas Hillqvist

Access databas motor heter JET.

Följande rad:

Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/sys/db1.mdb") 

Använder du ODBC drivrutinen för Access. Vilket man kan säga är JETS ODBC drivrutin.

Din connection tillhöra Microsoft ActiveX Data Objects(ADO) vilket är ett bibliotek för att använda OLEDB providers, databasdrivrutiner, från VB/VBA, etc.

Man kan jämföra ODBC drivrutiner och OLEDB providers. Det gör ungefär samma sak. Ger ett gemensamt gränssnitt mot olika datakällor. Där ODBC är äldst och skapades för databaser medan OLEDB providers även skall stödja andra datakällor så som Exchange, filsystem, active directory, osv.

Om du använder en ODBC drivrutin tillsammans med ADO så använder du en OLEDB till ODBC provider mellan.
ASP->ADO->OLEDB provider för ODBC->JET ODBC drivrutin->Databasfil
Vilket du slipper om du använder JET drivrutinen:
ASP->ADO->OLEDB provider för JET->Databasfil

Microsofts strategi att använda OLEDB.

Om du istället vill använda Jet's OLEDB provider, skriver du:
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/sys/db1.mdb") 


Så det är inte så stor skillnad i koden.

Däremot har det konsekvenser för olika operatiorer. T.ex. om du använder LIKE i SQL frågor så använder ODBC drivrutinen:
* Valfritt antal tecken
_ Ett tecken
som joker tecken. Medan OLEDB providern använder:
% Valfritt antal tecken
? Ett tecken

Viktigast är att vara konsekvent i din projekt. MEn du kan stegvis gå över till OLEDB providern. KAn underlätta för dig att byta till andra databasmotorer senare, så som MS SQL Server, mm.


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 721
27 958
271 751
5 688
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies