webForumDet fria alternativet

Lista databas med information från två tabeller

ASP

18 svar · 484 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

Hej ,

Som jag har det nu visar jag innehållet i tblVetskebalans med FluidID.

Men vill ändra detta till att visa med FluidNamn...
Snickrade ihop nedanstående kod

<%@ Language=VBScript %>

 <HTML><title>Lista tblV&auml;tskebalans inneh&aring;ll</title>
    <BODY>
 <%
    Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
   strSQL = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym FROM " & _
         "tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND" & _
		 " tblFluids.FluidID = tblFluids.FluidNamn"
  [B]Set objRS = objConn.Execute(strSQL)[/B]

 %>
    <TABLE border=1>
       <TR>
          <TD><B>Datum</B></TD>
          <TD><B>Personnummer</B></TD>
          <TD><B>FluidID</B></TD>
          <TD><B>Volym</B></TD>
       </TR>
 <%
 	    Do While Not objRS.EOF
       Response.Write "<TR><TD>" & objRS("Dag") & "</TD>"
       Response.Write "<TD>" & objRS("PatID") & "</TD>"
       Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
       Response.Write "<TD>" & objRS("Volym") & "</TD></TR>"
       objRS.MoveNext
    Loop
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
 %>
    </TABLE>
    </BODY>
 </HTML>

Men får fleutskriften

Microsoft JET Database Engine error '80040e07'

Data type mismatch in criteria expression.

/vatskebalans/tblvetskebalans1.asp, line 11

Rad 11 är fet-markerad

Medlem sedan mars 2002823 inlägg
#2

Upptäckte med

Response.Write strSQL

Första felet:
Det skall ju heta SELECT FROM...

Men nu får jag:

The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

Medlem sedan juni 200032 967 inlägg
#3

Hmm... Jag tycker SQL-frågan i det första inlägget ser korrekt ut?!?

Om du ska ha villkoret tblFluids.FluidID = tblFluids.FluidNamn i din SQL-fråga gäller att de två fälten är av jämförbara typer / samma datatyp. Är de verkligen det?

Medlem sedan mars 2002823 inlägg
#4

@nders skrev:

två fälten är av jämförbara typer / samma datatyp

Nej det var de inte..

Mycket tänka på tydligen

Medlem sedan mars 2002823 inlägg
#5

Nu har jag ändrat fälten till text... Men inte hjälper det

Medlem sedan juni 200032 967 inlägg
#6

På vilket sätt hjälper det inte?
Vad innehåller fälten?
Felmeddelande?

Är också tblVetskebalans.FluidID och tblFluids.FluidID av samma datatyp?

Medlem sedan mars 2002823 inlägg
#7

Nu har jag ändrat alla fält (hoppas jag) till samma = text - Bifogar databasen för säkerhetsskull

Nedanstående

<%@ Language=VBScript %>

 <HTML><title>Lista tblV&auml;tskebalans inneh&aring;ll</title>
    <BODY>
 <%
    Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
   strSQL = "SELECT FROM tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym FROM " & _
         "tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND" & _
		 " tblFluids.FluidID = tblFluids.FluidNamn"
 
Set objRS = objConn.Execute(strSQL)

 %>
    <TABLE border=1>
       <TR>
          <TD><B>Datum</B></TD>
          <TD><B>Personnummer</B></TD>
          <TD><B>FluidID</B></TD>
          <TD><B>Volym</B></TD>
       </TR>
 <%
 	    Do While Not objRS.EOF
       Response.Write "<TR><TD>" & objRS("Dag") & "</TD>"
       Response.Write "<TD>" & objRS("PatID") & "</TD>"
       Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
       Response.Write "<TD>" & objRS("Volym") & "</TD></TR>"
       objRS.MoveNext
    Loop
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
 %>
    </TABLE>
    </BODY>
 </HTML>

Ger utskriften

SELECT FROM tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym FROM tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND tblFluids.FluidID = tblFluids.FluidNamn
Microsoft JET Database Engine error '80040e14'

The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

Medlem sedan juni 200032 967 inlägg
#8

strSQL = "SELECT FROM tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym FROM " & _
"tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND" & _
" tblFluids.FluidID = tblFluids.FluidNamn"

Nu har du ju faktiskt ändrat din SQL-fråga så syntaxen blev felaktig. Som sagt, jag tycker den såg rätt ut i ditt första inlägg.

SELECT fältnamn FROM tabell

inte

SELECT FROM fältnamn FROM tabell

Mvh

Medlem sedan mars 2002823 inlägg
#9

Tänk att när jag för engångs skull lyckas med min strSQL, så lyckas jag ända strula till det hela -tack @nders för ditt tålamod...

Förrestän:
Igår kväll fungerade på Brinkster nedanstående

<%@LANGUAGE="VBSCRIPT" "%>
<%
Session.LCID = 1053
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open

pnr= Request.Form("personnr")
d = FormatDateTime(Date, 2)
For each formObj in Request.Form
     If left(formObj,9) = "leggatill" Then
            lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
            strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "')"

 Response.Write strSQL
vatskeb.Execute strSQL, , 128
   
     End if
Next
            
vatskeb.close
Set vatskeb = Nothing

Response.Redirect "lista_fluids.asp"

 %>

Men nu får jag

Type mismatch in expression.
vatskeb.Execute strSQL, , 128

dag är av typen datum
FluidID av typen text
volym av typen tal
PatiID av typen text

Undrar vad som har hänt under natten???

Medlem sedan mars 2002823 inlägg
#10

Nu när vi har löst förra problemet så upptäcker jag att koden inte fungerar.

PÅ vilket sätt?
Ju innehållet i tabellen listas ej av nedanstående kod

<%@ Language=VBScript %>

 <HTML><title>Lista tblVätskebalans innehåll</title>
    <BODY>
 <%
    Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
   strSQL = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym FROM " & _
         "tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND" & _
		 " tblFluids.FluidID = tblFluids.FluidNamn"
  Set objRS = objConn.Execute(strSQL)
 %>
    <TABLE border=1>
       <TR>
          <TD><B>Datum</B></TD>
          <TD><B>Personnummer</B></TD>
          <TD><B>Vätska</B></TD>
          <TD><B>Volym</B></TD>
       </TR>
 <%
 	    Do While Not objRS.EOF
       Response.Write "<TR><TD>" & objRS("Dag") & "</TD>"
       Response.Write "<TD>" & objRS("PatID") & "</TD>"
       Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
       Response.Write "<TD>" & objRS("Volym") & "</TD></TR>"
       objRS.MoveNext
    Loop
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing

Se själva

Medlem sedan juni 200032 967 inlägg
#11

Då får du väl inga träffar av din SQL-fråga, dvs båda villkoren i din WHERE-sats uppfylls inte.

Medlem sedan mars 2002823 inlägg
#12

@nders skrev:

Då får du väl inga träffar av din SQL-fråga, dvs båda villkoren i din WHERE-sats uppfylls inte

Båda villkoren borde vara uppfyllda:som vi ser här så har vi i tblVetskebalans bla lagt till FluidID= 22. Som vi kan se i tblFluids så är FluidID=22 det samma som Plasma

Medlem sedan juni 200032 967 inlägg
#13

Det här villkoret då: tblFluids.FluidID = tblFluids.FluidNamn?
Stämmer verkligen det? Ett ID som du jämför med ett namn, är det så, och i så fall, ska det vara så?

Medlem sedan mars 2002823 inlägg
#14

@nders skrev:

Det här villkoret då: tblFluids.FluidID = tblFluids.FluidNamn?
Stämmer verkligen det? Ett ID som du jämför med ett namn, är det så, och i så fall, ska det vara så?

Jag tycker att det stämmer:

  1. båda är av samma fälttyp (=text)
  2. på sidan lista_fluids.asp så markerar jag med kryssruta FluidID
  3. så som min databas är uppbyggd så finns ju bara FluidNamn i tblFluids ...
  4. kan maninte snickra till det hela ändå?
Medlem sedan mars 2002823 inlägg
#15

Alltså, det jag vill göra är följande uttryckt i "pseudo":Följande fält vill jag visa

  1. tblVetskebalans.Dag
  2. tblVetskebalans.PatID
  3. tblVetskebalans.Volym
  4. tblFluids.FluidNamn

Från tabellerna

  1. tblVetskebalans
  2. tblFluids

Dessutom
i tblFluids.FluidNamn skall visas namnet (=FluidNamn) som motsvarar den FluidID som är lagrat i fältet tblVetskebalans.FluidID.
Vidare är du ju så att:

  • tblVetskebalans.FluidID = tblFluids.FluidID = tblFluidsFluidNamn

Förstår ni ovanstående?
Därav mitt förslag på strSQL

strSQL = strSQL = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym FROM " & _
         "tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID AND" & _
 " tblFluids.FluidID = tblFluids.FluidNamn

Men tydligen har jag tänkt knas någonstans...

Medlem sedan dec. 200012 464 inlägg
#16

Jag ser ingen anledning att ha med

AND" & _
 " tblFluids.FluidID = tblFluids.FluidNamn

i frågan.

Medlem sedan mars 2002823 inlägg
#17

Du hade/har rätt LarsG

Men, jag måste medge att ajg inte riktigt förstår varför det funkar...

I strSQL

strSQL = "SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym FROM " & _
         "tblVetskebalans, tblFluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID"

Ser jag ju ingenstans att:
tblVetskebalans.FluidID = tblFluids.FluidNamn...

Varför behövs inte detta förhållande?

Medlem sedan mars 2002823 inlägg
#18

Jag funderar och funderar och funderar.... Men kommer ingen vart...

Som jag tolkar strSQL på "pseudosvenska"

Visa fälten tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID, tblVetskebalans.FluidID, tblVetskebalans.Volym från tabellerna tblVetskebalans och tblFluids Där tblVetskebalans.FluidID = tblFluids.FluidID

Men var står att vätskorna skall visas med namn och inte ID ???

Medlem sedan juni 200032 967 inlägg
#19

tblVetskebalans.FluidID = tblFluids.FluidNamn...

Varför behövs inte detta förhållande?

Därför att villkoret inte fungerar. ID:t kommer aldrig vara lika med namnet (om du inte har en extremt skum datamodell, men det kan jag inte tänka mig).

Men var står att vätskorna skall visas med namn och inte ID ???

Du hämtar ju både namn och ID. Du väljer ju själv vilka fält från recordsetet du vill skriva ut var?

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)