Avatar billede sapworld Nybegynder
07. oktober 2002 - 14:21 Der er 30 kommentarer og
1 løsning

Skriv til en Access database vha. DNS connection

Hej

Jeg er total newbie i ASP

Jeg kan vha. nedenstående kode få listet alle data i en tabel fra en Access database (DNS connection).

<%
'****  Create an ADO connection object *******
Set objConn = Server.CreateObject("ADODB.Connection")

'****  Set an active connection to the Connection object using a DSN-less connection  ******
objConn.Open="hcb_scales_tutorial"

'****** Create an ADO recordset object *******
'****** Initialise the strSQL variable with an SQL statement to query the database ******
Set objTutorials = Server.CreateObject("ADODB.Recordset")

'**** Get select statment for the connection. ***
strSQL = "SELECT * FROM personer ORDER BY personer.ID"

' **** Open the recordset with the SQL query
objTutorials.Open strSQL, objConn

%>

<table width="100%" border="0" cellspacing="1" cellpadding="1">
  <tr>
    <td>&nbsp;
        <h1><span lang="da">Display Database</span></h1>           
  </tr>
  <tr>
    <td>
      <table width="100%" border="0" cellspacing="1" cellpadding="4">
        <tr>
          <td width="3%"><B>nr.</B></td>
          <td width="20%"><B>Name</B></td>
          <td width="20%"><B>Telephone</B></td>
          <td width="20%"><B> Birthday</B></td>

        </tr>
<%        blnChangeColor=false%>

     
        <%    if objTutorials.BOF=true and objTutorials.EOF=true then%>
                <h1> No data has been found in Period <b> &nbsp;&nbsp;&nbsp;
                </b>
        <%
            else
            arrData=objTutorials.GetRows ()
            arrSize=ubound(arrData,2)
                if isarray(arrdata) then
                    for kk=0 to arrSize
                      if blnChangeColor=true then
                            %>
                            <tr>
                                  <td width="3%" bgcolor="#DDE9F5"><%=arrData(0,kk)%></td>
                                <td width="20%" bgcolor="#DDE9F5"><%=arrData(1,kk)%>&nbsp;&nbsp;<%=arrData(2,kk)%>
                                <td width="20%" bgcolor="#DDE9F5"><%=arrData(3,kk)%></td>
                                <td width="37%" bgcolor="#DDE9F5"><%=arrData(4,kk)%></td>
                            </tr>                       
                       
                      <%
                      blnChangeColor=false
                    else
                      %>
                      <tr>
                              <td width="3%" bgcolor="#ffffff"><%=arrData(0,kk)%></td>
                            <td width="20%" bgcolor="#ffffff"><%=arrData(1,kk)%>&nbsp;&nbsp;<%=arrData(2,kk)%>
                            <td width="20%" bgcolor="#ffffff"><%=arrData(3,kk)%></td>
                            <td width="37%" bgcolor="#ffffff"><%=arrData(4,kk)%></td>
                        </tr>                       
                        <%
                        blnChangeColor=True
                     
                    end if 
                     
                    next
                else
                end if
                end if%>

           
</table>

</table>


<%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''%><%
   
        objTutorials.Close
        set objTutorials=nothing
        set objConn =nothing
%>

Jeg har svært ved at skille koden ad så jeg kan skrive til dabasen i stedet. Jeg ville meget gerne kunne skrive til databasen fra en form der er sat ind på en anden side. Som eksempel kunne jeg nøjes med at udfylde feltet "name" i databasen fra formen:

<form name="form1" method="get" action="hjælp.asp">
    name:
    <input type="text" name="navn" size="20">
    <br>
<input type="submit" name="Submit" value="opret">
</form>

Er der nogen der har mulighed for at hjælpe mig med at "knække" den?

Hilsen

Kim
http://www.sapworld.dk
Avatar billede the_bma_man Nybegynder
07. oktober 2002 - 14:59 #1
Jeg er ikke helt med på, hvad det er, du ikke kan finde ud af?
Du skriver til databasen med et INSERT statement i stedet for SELECT. Men hvad er det helt præcist, du ikke kan få til at virke?
Avatar billede the_bma_man Nybegynder
07. oktober 2002 - 15:02 #2
Muligvis her:

Set objConn = Server.CreateObject("ADODB.Connection")

'****  Set an active connection to the Connection object using a DSN-less connection  ******
objConn.Open="hcb_scales_tutorial"

indStr = request.querystring(navn)
strSQL = "INSERT INTO yourtable(Navn) values ('" & indStr & "')"
objConn.Execute(strSQL)
Avatar billede sapworld Nybegynder
07. oktober 2002 - 15:25 #3
Hej igen bma man

Jeg har lavet en side "eksempel6.asp" der er en "form" som vha. koden på side "eksempel6.asp" skulle skrive til en access databasen (tutorial) i tabellen "personer" kolonne "Fornavn".

På "eksempel6.asp" har jeg koden:
<form name="form1" method="get" action="eksempel7.asp">
    Navn:
    <input type="text" name="Fornavn" size="20">
    <br>
    <br>
    <input type="submit" name="Submit" value="opdater">
</form>

På side 7 har jeg nu koden:
<%
'****  Create an ADO connection object *******
Set objConn = Server.CreateObject("ADODB.Connection")

'****  Set an active connection to the Connection object using a DSN-less connection  ******
objConn.Open="hcb_scales_tutorial"

'****** Create an ADO recordset object *******
'****** Initialise the strSQL variable with an SQL statement to query the database ******
Set objTutorials = Server.CreateObject("ADODB.Recordset")

' **** Open the recordset with the SQL query
objTutorials.Open strSQL, objConn

indStr = request.querystring(Fornavn)
strSQL = "INSERT INTO personer values ('" & indStr & "')"
objConn.Execute(strSQL)

%>

Det virker bare ikke

Hilsen

Kim
Avatar billede the_bma_man Nybegynder
07. oktober 2002 - 15:28 #4
Du skal have request.querystring("Fornavn") - altså i gåseøjne. Min fejl - sorry.
Avatar billede the_bma_man Nybegynder
07. oktober 2002 - 15:32 #5
Og i øvrigt skal du have lige så mange parametre i din (values) når du bare gør sådan. Hvis du vil indsætte et enkelt kolonne i en tabel med flere kolonner skal du bruge
insert into <table>(felt1, felt2, osv.) values (værdi1, værdi2, osv.)
Avatar billede sapworld Nybegynder
07. oktober 2002 - 15:37 #6
Hej igen

Jeg får følgende fejl ud:
ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

eksempel7.asp, line 28

Ved du hvad det kan skyldes?

Hilsen

Kim
Avatar billede the_bma_man Nybegynder
07. oktober 2002 - 15:39 #7
Hmm, hvad har du lige stående i linie 28?
Avatar billede the_bma_man Nybegynder
07. oktober 2002 - 15:42 #8
Prøv at ret koden til, så din strSQL er helt statisk - altså

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"
strSQL = "INSERT INTO PERSONER(FORNAVN) VALUES ('Kim')"
objConn.Execute(strSQL)
objConn.Close

Dette skulle give dig en record i DB. Resten er rent formular-halløj.
Avatar billede sapworld Nybegynder
07. oktober 2002 - 15:46 #9
Jeg er ikke lige klar over om tomme linier mm. også skal tælles med, men her er toppen af siden:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="description" content="NA">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="keywords" content="NA">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="NN_template" content="Level3 Version 1.0 2002">
<!--****************DO NOT CHANGE THE FOLLOWIG CODE *******************************
          This code is important for a properly working template          -->
<msie:download id="downloader" style="behavior: url(#default#download)" />
<!-- #Include virtual="/menu_function.inc" -->
<title>Write your content here</title>
</head>
<%
'****  Create an ADO connection object *******
Set objConn = Server.CreateObject("ADODB.Connection")

'****  Set an active connection to the Connection object using a DSN-less connection  ******
objConn.Open="hcb_scales_tutorial"

'****** Create an ADO recordset object *******
'****** Initialise the strSQL variable with an SQL statement to query the database ******
Set objTutorials = Server.CreateObject("ADODB.Recordset")

' **** Open the recordset with the SQL query
objTutorials.Open strSQL, objConn

indStr = request.querystring("Fornavn")
strSQL = "INSERT INTO personer values ('" & indStr & "')"
objConn.Execute(strSQL)

%>
Avatar billede the_bma_man Nybegynder
07. oktober 2002 - 15:49 #10
Har du KUN det ene felt "fornavn" i tabellen "personer"?
Ellers er det det, der er galt. Så SKAL du bruge
"insert into tabel(felt1, felt2) values (værdi1, værdi2)", som jeg vist også skrev i en tidlige meddelelse?
Avatar billede sapworld Nybegynder
07. oktober 2002 - 21:44 #11
Sorry, det så jeg ikke lige i farten - Det er flere felter i tabellen - prøver lige at skrive til dem alle.

Kim
Avatar billede sapworld Nybegynder
08. oktober 2002 - 08:00 #12
Hej
Tidligere i korrespondancen foreslog du at droppe formularen og skrive direkte til databasen - god idé.

Jeg 4 kolonner (Fornavn, Efternavn, Telefon, Foedselsdato))  i tabellen personer+ en kolonne med automatisk genering af ID.

Jeg har indsat følgende kode på eksempel1.asp:

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"
strSQL = "INSERT INTO PERSONER(Fornavn) VALUES ('Kim')"
strSQL = "INSERT INTO PERSONER(Efternavn) VALUES ('Vinther')"
strSQL = "INSERT INTO PERSONER(Telefon) VALUES ('11111111')"
strSQL = "INSERT INTO PERSONER(Foedselsdato) VALUES ('1215')"
objConn.Execute(strSQL)
objConn.Close

Jeg går ud fra at jeg så skulle få en post i databasen, når jeg så går ind på siden eksempel1.asp i min browser, men det sker ikke - kan du se fejlen i koden?

Hilsen

Kim
Avatar billede sapworld Nybegynder
08. oktober 2002 - 08:19 #13
Hej Bma Man
Ups, jeg skal lige huske at "refresh" min browser ;)  -  sorry

Jeg kan se at den sidste værdi 1215 bliver oprettet i tabellen, men ikke de andre - jeg går ud fra at mine variabler skal være anderledes, men jeg kan ikke rigtig få det til at virke selvom jeg navngiver dem anderledes - kan du give mig koden til det?

Kim
Avatar billede the_bma_man Nybegynder
08. oktober 2002 - 09:42 #14
Refresh er en god ting -)
Det du gør, er forkert. :-(
Du overskriver jo variablen strSQL med en ny værdi hele tiden - så det er kun det sidste, der rent faktisk sker - hvilket du jo også kunne se efterfølgende.
Hvis du vil lave fire records - så skal du lave en objConn.Execute(strSQL) efter hver strSQL=
Men det er nok ikke det du vil. Prøv med:
strSQL = "INSERT INTO PERSONER(Fornavn, Efternavn, Telefon, Foedselsdato) VALUES('Kim', 'Winther', '11111111', '1215')
objConn.Execute(strSQL)

Dette skulle give dig een record, med de fire værdier i hvert deres felt.
Avatar billede sapworld Nybegynder
08. oktober 2002 - 15:37 #15
Yes, så er den der næsten- jeg har sat følgende ind, som opretter en post i databasen:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"
strSQL = "INSERT INTO PERSONER (Fornavn, Efternavn, Telefon, Foedselsdato) VALUES('Kim', 'Winther', '11111111', '1215')"
objConn.Execute(strSQL)
objConn.Close
%>

men men men når jeg retter den til så data kommer fra en form, så virker det ikke mere:

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"

indStr = request.querystring("Fornavn", "Efternavn", "Telefon", "Foedselsdato" )
strSQL = "INSERT INTO personer (Fornavn, Efternavn, Telefon, Foedselsdato) values ('" & indStr & "')"
objConn.Execute(strSQL)
objConn.Close
%>

Denne fejl kommer:
Wrong number of arguments or invalid property assignment: 'querystring'

Kan du se hvad jeg gør galt??

Kim
Avatar billede the_bma_man Nybegynder
08. oktober 2002 - 16:10 #16
Ja, den er helt galt.
Du kan ikke requeste på den måde.

prøv med:

strSQL = "INSERT INTO personer(Fornavn, Efternavn, Telefon, Foedselsdato) values('" & requst.querystring("Fornavn") & "', '" & request.querystring("Efternavn") & "', '" & request.querystring("Telefon") & "', '" & request.querystring("Foedselsdato") & "'"
Avatar billede sapworld Nybegynder
08. oktober 2002 - 16:18 #17
Hmm - så kommer denne fejl:
Wrong number of arguments or invalid property assignment: 'querystring'

Hilsen

Kim
Avatar billede the_bma_man Nybegynder
08. oktober 2002 - 16:22 #18
Der manglede lige en slut-parantes:

strSQL = "INSERT INTO personer(Fornavn, Efternavn, Telefon, Foedselsdato) values('" & requst.querystring("Fornavn") & "', '" & request.querystring("Efternavn") & "', '" & request.querystring("Telefon") & "', '" & request.querystring("Foedselsdato") & "')"
Avatar billede sapworld Nybegynder
09. oktober 2002 - 08:01 #19
Hmm - den driller stadig:
Microsoft VBScript compilation error '800a0401'

Expected end of statement

strSQL = "INSERT INTO personer(Fornavn, Efternavn, Telefon, Foedselsdato) values('" & requst.querystring("Fornavn") & "', '" & request.querystring("Efternavn") & "', '" & request.querystring("Telefon") & "', '" & request.querystring("Foedselsdato") & "')"objConn.Execute(strSQL)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^


Hilsen

Kim
Avatar billede the_bma_man Nybegynder
09. oktober 2002 - 14:02 #20
Du skal have objConn.Execure(strSQL) på sin egen linie.
Avatar billede sapworld Nybegynder
09. oktober 2002 - 14:13 #21
Hej

Det hjælper ikke:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"

indStr = request.querystring("Fornavn", "Efternavn", "Telefon", "Foedselsdato" )
strSQL = "INSERT INTO personer(Fornavn, Efternavn, Telefon, Foedselsdato) values('" & requst.querystring("Fornavn") & "', '" & request.querystring("Efternavn") & "', '" & request.querystring("Telefon") & "', '" & request.querystring("Foedselsdato") & "')"
objConn.Execute(strSQL)
objConn.Close
%>
Giver følgende fejl_

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'querystring'
Avatar billede the_bma_man Nybegynder
09. oktober 2002 - 14:22 #22
Du skal slette den linie med indStr = request.querystring
Avatar billede sapworld Nybegynder
09. oktober 2002 - 14:27 #23
Så må det komme til at se sådan ud:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"

strSQL = "INSERT INTO personer(Fornavn, Efternavn, Telefon, Foedselsdato) values('" & requst.querystring("Fornavn") & "', '" & request.querystring("Efternavn") & "', '" & request.querystring("Telefon") & "', '" & request.querystring("Foedselsdato") & "')"
objConn.Execute(strSQL)
objConn.Close
%>

Så kommer følgende fejl:
Microsoft VBScript runtime error '800a01a8'

Object required: ''
Avatar billede the_bma_man Nybegynder
09. oktober 2002 - 15:27 #24
Prøv lige at lave en
response.write strSQL
lige over din objConn.execute
Og smid lige sql-strengen her.
Avatar billede sapworld Nybegynder
10. oktober 2002 - 09:07 #25
Hej

Hvis det er sådan du mener, så virker det ikke:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"

indStr = request.querystring("Fornavn", "Efternavn", "Telefon", "Foedselsdato" )
strSQL = "INSERT INTO personer(Fornavn, Efternavn, Telefon, Foedselsdato) values('" & requst.querystring("Fornavn") & "', '" & request.querystring("Efternavn") & "', '" & request.querystring("Telefon") & "', '" & request.querystring("Foedselsdato") & "')"
response.write (strSQL)
objConn.Execute(strSQL)
objConn.Close
%>

Kim
Avatar billede the_bma_man Nybegynder
10. oktober 2002 - 09:34 #26
Det er sådan - men kommenter lige din execute ud, mens du fejlfinder.
Avatar billede sapworld Nybegynder
10. oktober 2002 - 10:08 #27
Det er denne fejl
Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'querystring'

/eksempel7.asp, line 21
Avatar billede the_bma_man Nybegynder
10. oktober 2002 - 10:45 #28
Du skal stadig lige slette denne linie:
indStr = request.querystring("Fornavn", "Efternavn", "Telefon", "Foedselsdato" )

Sorry - så det ikke lige i farten før.
Avatar billede sapworld Nybegynder
10. oktober 2002 - 13:18 #29
Har prøvet:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open="hcb_scales_tutorial"

strSQL = "INSERT INTO personer(Fornavn, Efternavn, Telefon, Foedselsdato) values('" & requst.querystring("Fornavn") & "', '" & request.querystring("Efternavn") & "', '" & request.querystring("Telefon") & "', '" & request.querystring("Foedselsdato") & "')"
response.write (strSQL)
objConn.Execute(strSQL)
objConn.Close
%>


Fejl:
Microsoft VBScript runtime error '800a01a8'

Object required: ''

eksempel7.asp, line 21
Avatar billede sapworld Nybegynder
14. oktober 2002 - 16:04 #30
Ok, vi kom et stykke at vejen - Tak for hjælpen.
Avatar billede the_bma_man Nybegynder
15. oktober 2002 - 10:01 #31
Velbekomme - thanks 4 points.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester