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


låt oss bygga en egen, Generell DB_mod-rutin... (Open source)

Postades av 2006-11-08 16:18:25 - Hobbe Husman, i forum asp - allmänt, Tråden har 5 Kommentarer och lästs av 708 personer

Hej gott folk,

Jag har börjat på en generell rutin som automatiskt gör ändringar i en databasen.

Tanken är att från sitt formulär ska man kunna kalla på tex filen "dbMod.asp" där alla i DBn görs. Detta istället för att göra en ny statisk db-mod fil varenda gång.

Här är en del av koden iaf (beskrivning längre ned):
<code>
....
'Ta på ngt sätt reda på om "post" Eller "GET" används. Detta nedan funkar inte men det visar lite hur det är tänkt..

if request.querystring.count > 0 then
with Request.QueryString
else
with Request.form
end

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(.item("dbFile")) & ";User Id=admin;Password=;"
Set objRS = Server.CreateObject("ADODB.Recordset")


.....
if action="add" OR action="update" then
On Error Resume Next
Err.Clear
For i=1 to .Count 'loopa igenom alla värde-par i Querystring/formen
Response.Write .key(i) & " - " & .Item(i) & "-------><BR>"
Set fd = objRS.Fields(.key(i)) 'om fält med detta namn INTE finns-> får vi ett error
Response.Write "Err.Number=" & Err.Number & "<BR>"
If not Err.Number <> 0 Then ' Error, dvs fältet fanns inte, så hoppa över
Response.Write "<BR> objRS('"&.key(i)&"') = " & objRS(.key(i)) & " (datatyp:" &objRS(.key(i)).Type & ")<BR>"
'Fältet finns i db, så fortsätt

if .Item(i) <> "" then
Select case objRS(.key(i)).Type 'Typecaste, beroende på datatyp.
case 3 'Numeric
objRS(.Key(i)) = Cint(.Item(i))
Response.Write "#Numeric# "
case 7 'Date
objRS(.Key(i)) = Cdate(.Item(i))
Response.Write "#Date# "
case 202, 203 'text OR char
objRS(.Key(i)) = .Item(i)
Response.Write "#TextORChar# "
case else
Response.Write "felaktig datatyp<BR>"
end select
else
objRS(.Key(i)) = null
Response.Write "EMPTY FORM<BR>"
end if
else
Response.Write "<BR> objRS('"&.key(i)&"') = <B>NULL</B> -> Error = "&Err.Description &""
end if
Response.Write "<BR><HR>"
Err.Clear
objRS.update
next
on error goto 0
elseif action="del" then 'Radera posten
objRS.Delete adAffectCurrent
else
Response.Write "FELAKTIG ACTION!!"
end if
end with

</code>

I princip så utgår man från att om ett request.form/querystring namn finns i databasen, då uppdaterar/lägger/raderar man detta.


Formuläret bör se ut ngt i stil med detta:
<code>
<FORM action="db_mod.asp" method="get|post">
<INPUT type=hidden name="dBFile" Value="minDB.mdb">
<INPUT type=hidden name="dBTbl" Value="minDBTbl">
<INPUT type=hidden name="dBID" Value="minDBTbl_ID">

<INPUT type=input name="UserName" Value="Bertil Jansson">
<INPUT type=input name="Stad" Value="kiruna">

<INPUT type=submit>
</FORM>
</code>

I fallet ovan skickar man även med databasnamn och tabellnamn.

tex: db_mop.asp?UserName=lasse&ort=kiruna ->
I DBn finns ett fält med namnet Username, eftersom inget IDNr skickats med betyder det att vi lägger till ett fält där UserName=lasse.. å andra sidan finns inget fält som heter "ort" i DBn, så denna ignorerar vi..

Hur bestämma vad som skall göras?
Om man vet vad som skall hända så kan man använda <INPUT type=hidden name="action" Value="add|del|update">. Vill man tabort en rad MÅSTE man skicka med action=del och ID för den raden. Men man behöver inte skicka med action om man skall lägga till eller uppdatera.
Då kan man automatiskt bestämma detta genom:
OM ID<>"" och action="" -> update
OM ID="" och action="" -> add
(koden för detta, samt lite annat har jag inte tait med här)

Ja.. ni fattar nog poängen..
Nu vill jag alltså ha hjälp med att vidareutveckla denna opensource-rutin. Så om du kommer på förbättringar/förslag/ändringar... tveka inte att posta här.


Svara

Sv: låt oss bygga en egen, Generell DB_mod-rutin... (Open source)

Postades av 2006-11-08 21:53:00 - Andreas Hillqvist

Du bör inte skicka sökvägen till databasen. Detta innbär att man kan läsa skriva till vilken databas som helst.
Du bör skydda ditt gränssnitt med login: antingen IIS inbyggda eller ett eget. Om du har et eget databas system se då till att man inte kan öppna den databasen med systemet.

Jag skulle utforma gränssnittet så här:

<FORM action="db_mod.asp" method="get|post">
<INPUT type="hidden" name="ConnectionId" Value="{FF0B8EF7-C902-4D56-BF32-63E6E65D1438}">
<INPUT type="hidden" name="TableId" Value="{822A23A8-D44A-4D09-81A9-6B3A3CDDB0BD}">

<INPUT type="hidden" name="fields(1).name" Value="UserName">
<INPUT type="text" name="fields(1).value" Value="Bertil Jansson">

<INPUT type="hidden" name="fields(2).name" Value="Stad">
<INPUT type="text" name="fields(2).value" Value="kiruna">

<INPUT type="hidden" name="fields.count" Value="2">

<INPUT type="submit" name="action" value="add">
</FORM>


<%
    If Request.Form.Count > 0 then
        DoStuff Request.Form
    ElseIf Request.Querystring.Count > 0 then
        DoStuff Request.Querystring
    End

Sub DoStuff(Parameters)
Dim I
Dim Field
Dim FieldName
Dim FieldValue
Dim ConnectionString
    With Parameters
        ConnectionString = GetConnection(.item("ConnectionId"))  
        Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.Open ConnectionString

        Set objRS = Server.CreateObject("ADODB.Recordset")

        Select Case action
        Case "add", "update" 
            For I = 1 to .item("fields.count") 'loopa igenom alla värde-par i Querystring/formen
                FieldName = .item("fields(" & I & ").name")
                FieldValue = .item("fields(" & I & ").value")
                Set Field = objRs(FieldName)
                If Not IsEmpty(FieldValue) Then        
                    Select case Field.Type 'Typecaste, beroende på datatyp. 
                    case 3 'Numeric    
                        Field.Value = Cint(FieldValue)
                        Response.Write "#Numeric# "
                    case 7 'Date
                        Field.Value = CDate(FieldValue)
                        Response.Write "#Date# "
                    case 202, 203 'text OR char
                        Field.Value = FieldValue
                        Response.Write "#TextORChar# "
                    case else
                        Response.Write "felaktig datatyp<BR>"
                    end select
                Else
                    Field.Value = Null
                    Response.Write "EMPTY FORM<BR>"
                End If
            Next
           objRS.update
        Case action="del" 'Radera posten
            objRS.Delete adAffectCurrent
        Case else
            Response.Write "FELAKTIG ACTION!!"
        End Select
     End with
End Sub


Något åt det hållet i alla fall.




I princip så utgår man från att om ett request.form/querystring namn finns i databasen, då uppdaterar/lägger/raderar man detta.


Formuläret bör se ut ngt i stil med detta:


Svara

Sv:låt oss bygga en egen, Generell DB_mod-rutin... (Open source)

Postades av 2006-11-09 10:03:16 - Hobbe Husman

Ja, självklart finns det en hel del kvar att göra innan rutinen är helt fulländad, speciellt ur säkerhetssynpunkt.
I mitt fall så spelar det ingen roll, då sidan ligger på företagets intranät och skyddas således på en högre nivå med bla inloggning.
Men visst kan man göra som Andreas skrev.

Tack Andreas, fick nu svar på hur jag skulle ha löst detta:
<code>
If Request.Form.Count > 0 then
DoStuff Request.Form
ElseIf Request.Querystring.Count > 0 then
DoStuff Request.Querystring
End
</code>
Jag provade nämligen med:
<code>
dim req
If Request.Form.Count > 0 then
req = Request.Form
ElseIf Request.Querystring.Count > 0 then
req = Request.Querystring
End
...
with req
.item("xxx")
</code>
Men fick det inte att fungera..



En sak förstår jag dock inte. Varför har du valt:
<code>
<INPUT type="hidden" name="fields(2).name" Value="Stad">
<INPUT type="text" name="fields(2).value" Value="kiruna">
</code>
istället för:
<code>
<INPUT type="text" name="stad" Value="kiruna">
</code>

Vad blir skillnaden? (Bortsett från att det blir en rad mer)


Har för mig att jag provade: <code>If Not IsEmpty(FieldValue) Then </code> men fick error då fältnamnet inte existerar, därför fick jag köra på en error.number <> 0 lösningen.




Svara

Sv: låt oss bygga en egen, Generell DB_mod-rutin... (Open source)

Postades av 2006-11-09 18:51:57 - Mikael Jönsson

<code>
dim req
If Request.Form.Count > 0 then
req = Request.Form
ElseIf Request.Querystring.Count > 0 then
req = Request.Querystring
End
...
with req
.item("xxx")
</code>

Detta funkar om du använder "Set req = Request.Form" och "Set req = Request.QueryString"

/Micke


Svara

Sv:låt oss bygga en egen, Generell DB_mod-rutin... (Open source)

Postades av 2006-11-10 15:06:29 - Hobbe Husman

aha, det var såpass enkelt alltså..... nice, det ska jag testa..

Märkligt, jag trodde det skulle bli mer action i den här tråden.
Finns det nån liknande rutin därute måntro? hur gör ni andra? Bygger ni en ny sida per gång?


Svara

Sv: låt oss bygga en egen, Generell DB_mod-rutin... (Open source)

Postades av 2006-11-14 11:07:23 - Hobbe Husman

*BUMP*


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 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

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 770
27 960
271 761
547
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