Avatar billede mitbrugernavn Praktikant
22. november 2003 - 21:05 Der er 8 kommentarer og
1 løsning

datatyperne stemmer ikke overens - hvorfor

<form method="post" name="form1" action="vagtplan_opret_opdat3.asp">

<%
strSQL = "SELECT * FROM dato ORDER BY dato"
'her kan den hente variabelt antal, derfor laver jeg feltnavnene +1,+2, o.s.v.
set rs = conn.execute(strSQL)
%>
      <%
x = 1
rs.movefirst
Do While NOT rs.EOF
%>
      <tr>
        <td class="tekst2">
          <input type="text" name="dato<%= x %>" size="8" value="<% = rs("dato")%>">
        </td>
        <td>
<select name="vagttype<%= x %>" class="tekst5sort">
<option>
                    <option value="dag" class="tekst5rod">dag</option>
            <option value="aften" class="tekst5rod">aften</option>
            <option value="nat" class="tekst5rod">nat</option>
          </select>  </td>
  <%
x = x + 1
rs.movenext
Loop
%>
      <tr>
        <td height="50">&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>
<input type="hidden" name="antal" value="<%= x %>">
</td>
        <td>&nbsp;</td>
        <td><input type="Submit" value="Indsæt data" name"b1"></td>
        <td>&nbsp;</td>
      </tr>
    </table>
  </div>
</form>

så indsætningsfilen vagtplan_opret_opdat3.asp

<%
strantal = request.form("antal")
for x = 0 to strantal
strSQL = "INSERT INTO vagtplan (dato,vagttype) values('" & request.form("dato" & x)& "', '" & request.form("vagttype" & x)& "')"
conn.Execute(strSQL)
Next
%>
den indsætter det den skal - hvis feltet dato er defineret som et tekstfelt, men hvis jeg laver det om til
dato og klokkeslæt (som det helst skal være) så kommer følgende fejl

Datatyperne stemmer ikke overens i kriterieudtrykket.
vagtplan_opret_opdat3.asp, line 16
som er strSQL ="INSERT .....


?????????????????? nogle der kan give et godt svar på det
Avatar billede mitbrugernavn Praktikant
22. november 2003 - 21:07 #1
jeg mener

den indsætter det den skal - hvis feltet dato i databasen er defineret som et tekstfelt, men hvis jeg laver det om til
dato og klokkeslæt (som det helst skal være) så kommer følgende fejl

Datatyperne stemmer ikke overens i kriterieudtrykket.
vagtplan_opret_opdat3.asp, line 16
som er strSQL ="INSERT .....
Avatar billede Slettet bruger
22. november 2003 - 21:15 #2
Nu kan jeg ikke se hvilken database du bruger men hvis der er access så skal der # om datoen.
Avatar billede Slettet bruger
22. november 2003 - 21:15 #3
Altså:
strSQL = "INSERT INTO vagtplan (dato,vagttype) values(#" & request.form("dato" & x)& "#, '" & request.form("vagttype" & x)& "')"
Avatar billede mitbrugernavn Praktikant
23. november 2003 - 10:43 #4
mange tak for svaret, læste lidt om havelågerne i aftes, men var ikke helt klar over hvor de skulle stå, tester eksemplet senere i dag og håber at det virker, og vender tilbage senere.
Avatar billede mitbrugernavn Praktikant
23. november 2003 - 11:51 #5
det er en access database jeg bruger og nu har jeg testet, satte dato kolonnen til dato og klokkeslet og rettede i opdateringsfilen til ...(#" & request.form("dato" & x)& "#, ...., men den kommer ud med følgende fejl

der er en syntaksefejli datoen i forespørgselsudtrykket "##".

men den sætter ind som den skal, men nu sætter den ind med månede-dag-år.


?????

problemerne opstår jo hvis jeg lader kolonnen i db være et tekstfelt - så henter den ikke datoerne ind i den rigtige rækkefølge og det ser jo lidt rodet ud mildest talt.


?????
Avatar billede Slettet bruger
23. november 2003 - 12:08 #6
Det lyder underligt at du får en syntaksfejl hvis det bliver sat ind.
Er det den rigtige dato du får sat ind? Bortset fra at det vender om.
Avatar billede eagleeye Praktikant
23. november 2003 - 13:23 #7
Angående dato'er via SQL og Access så skal datoen overføres i US/UK format som er yyyy-mm-dd eller mm-dd-yyyy. Hvis man bruger DK format som er dd-mm-yyyy så vil månede og dag blive byttet.

Derfor skal datoen formateres til yyyy-mm-dd. Man kan ikke ligge en tom dato i med "" eller ## det skal være Null man bruger hvis man vil ligge en tom dato i. Når null bruges skal det være uden #.

Så prøv sådan noget:


strDato = request.form("dato" & x)
if strDato = "" then
  strDato = "Null"
else
  strDato = "#" & Year(strDato) & "-" & month(strDato) & "-" & day(strDato) & "#"
end if
strSQL = "INSERT INTO vagtplan (dato,vagttype) values(" & strDato & ", '" & request.form("vagttype" & x)& "')"
Avatar billede mitbrugernavn Praktikant
23. november 2003 - 19:57 #8
den kommer godt nok ikke med fejl nu, men indsætter heller ikke noget i db kolonne dato, som jeg nu har lavet
til en dato og klokkeslæt.

den henter dato og ugedagnavn fra en db, som er defineret som dato - klokkeslæt - ind i følgende


        <form method="post" name="form1" action="vagtplan_opret_opdat3.asp">

      <%
strSQL = "SELECT * FROM dato ORDER BY dato"
set rs = conn.execute(strSQL)
%>
      <%
x = 0
rs.movefirst
Do While NOT rs.EOF
%>
      <tr>
        <td width="11%" class="tekst2">
<input type="hidden" name="dato<%= x %>" size="8" value="<% = rs("dato")%>">
  <% = rs("dato")%>
 
        </td>
        <td width="%" class="tekst2roed">
<input type="hidden" name="ugedag<%= x %>" size="8" value="<% = rs("ugedag")%>">
  <% = rs("ugedag")%>   
</td>
        <td> <select name="vagttype<%= x %>" class="tekst5sort">
            <option>
            <option value="dag" class="tekst5rod">dag</option>
            <option value="aften" class="tekst5rod">aften</option>
            <option value="nat" class="tekst5rod">nat</option>
          </select> </td>
        <td>
<%
x = x + 1
rs.movenext
Loop
%>
</form>


'og det står som det skal - så det bliver hentet - når jeg så vælger vagttype og opdater, kommer ugedag og vagttype
fint ind men ikke datoen

har følgende i opdateringsfilen

<%
strDato = request.form("dato" & x)
if strDato = "" then
  strDato = "Null"
else
  strDato = "#" & Year(strDato) & "-" & month(strDato) & "-" & day(strDato) & "#"
end if
strantal = request.form("antal")

for x = 0 to (strantal)-1
strSQL = "INSERT INTO vagtplan (ugedag,dato,vagttype) values('" & request.form("ugedag" & x) & "'," & strDato & ", '" & request.form("vagttype" & x)& "')"
conn.Execute(strSQL)
Next

%>

det virker som om der ikke er noget i feltet(troede at jeg havde fået den feltet uden for formen, men nej) - og det er der jo - hvis jeg laver om til tekstfelt i db så
skriver den jo fint ind

??????

har leget lidt med det - og den tager ikke det med før end if, hvis jeg så lægger koden således

<%
strantal = request.form("antal")
for x = 0 to (strantal)-1
strDato = request.form("dato" & x)
if strDato = "" then
  strDato = "Null"
else
  strDato = "#" & Year(strDato) & "-" & month(strDato) & "-" & day(strDato) & "#"
end if

strSQL = "INSERT INTO vagtplan (ugedag,dato,vagttype,vagttidspunkt,sted,laegenavn,notat,bil) values('" & request.form("ugedag" & x) & "'," & strDato & ", '" & request.form("vagttype" & x)& "', '" & request.form("tidspunkt" & x)& "', '" & request.form("sted" & x)& "', '" & request.form("laegenavn" & x)& "', '" & request.form("notat" & x)& "', '" & request.form("bil" & x)& "')"
conn.Execute(strSQL)
Next

%>

til eagleeye

så kører det bare derud af (det var måske også sådan du mente jeg skulle gøre, men læste det bare ikke sådan første gang) - mange tak for hjælpen - du er som sædvanlig god til at få en på rette
vej - dette har været en hård proces, men har lært godt om array - split og indsæt flere. og du får point.

til bertie

ingen point men også en del kloger ;-))))
Avatar billede Slettet bruger
23. november 2003 - 21:57 #9
Tak for ingenting for at løse dit oprindelige spm. med at datatyperne stemmer ikke overens :-(
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
Kurser inden for grundlæggende programmering

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