[SQL, ASP, Ultradev4]ingewikkeld probleem

Pagina: 1
Acties:

  • Rody
  • Registratie: Juni 2000
  • Laatst online: 01-08 10:13
Ik heb een (naar mijn id) ingewikkeld probleem.
Ik heb een accesdatabase:

Afbeeldingslocatie: http://home.wanadoo.nl/roderik/pics/acces.jpg

Ik heb in DreamWeaver4 Ultradev een ASP formulier met een dropdownlistbox en een button (beide in een form) Onder die dropdownlistbox is een dynamic list/menu aangewezen en die zegt:
get labels from bedrijsnaam.
get values from klant_code.
Je moet uit de dropdownlistbox een bedrijfsnaam kiezen en op de knop drukken. Je komt dan in een volgend scherm.
In dit scherm worden de klantgegevens getoond en de sitegegevens getoond. Dit werkt perfect, de juiste site wordt van de juiste klant getoond en de klantgegevens zijn ook juist. Op dit scherm zijn/staan 3 recordsets, namelijk van: tabel klant, tabel site en tabel onderhoud.
Nu is het probleem dat:
de tabel onderhoud moet er ook nog worden bij getoond. Dit wil niet werken. Ik heb het in de recordsets geprobeerd te filteren: werkt niet. Ik heb de recordset op advanced gezet om in de SQL querie te kunnen klooien. Ik deed het volgende:
SELECT onderhoud_code, datum, beschrijving, prijs, opmerking, gefactureerd, Site.site_code, Onderhoud.site_code
FROM Onderhoud, Site
WHERE Onderhoud.site_code = Site.site_code
werkte ook niet. Weet iemand hoe de code in SQL moet zijn of een andere manier om dit voorelkaar te krijgen :?
Het komt aan op puur het programmeren van dat recordset met SQL :?
Als ik de recordset zonder filter doe, worden ALLE onderhoudsgegevens getoond, maar dat moet dus niet. het moet per site, ik denk dat ik er dichtbij zit maar weet niet wat ik precies fout doe :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:41

gorgi_19

Kruimeltjes zijn weer op :9

Je moet die site.sitecode waarschijnlijk vervangen door een ASP-variabele.

Voor de rest geen idee; ik kan niet in je ASP-code kijken. Is waarschijnlijk een combinatie van ASP en SQL, waar het probleem ligt

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

misschien dat dit wel werkt?
code:
1
2
3
SELECT onderhoud_code, datum, beschrijving, prijs, opmerking, 
gefactureerd, Site.site_code, Onderhoud.site_code
FROM Onderhoud INNER JOIN Site ON Onderhoud.site_code = Site.site_code

  • Rody
  • Registratie: Juni 2000
  • Laatst online: 01-08 10:13
hiermaar voor zekerheid de asp code die op de pagina op dit moment gegeneert is
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<%@LANGUAGE="JAVASCRIPT"%>
<!--#include file="Connections/connsilcon.asp" -->
<%
var Recordset1__MMColParam = "1";
if(String(Request.Form("select")) != "undefined") { 
  Recordset1__MMColParam = String(Request.Form("select"));
}
%>
<%
var Recordset1 = Server.CreateObject("ADODB.Recordset");
Recordset1.ActiveConnection = MM_connsilcon_STRING;
Recordset1.Source = "SELECT klant_code, bedrijfsnaam, adres, postcode, plaats, regio, telefoon, mobiel, fax, email, contactpersoon FROM Klant WHERE klant_code = "+ Recordset1__MMColParam.replace(/'/g, "''") + "";
Recordset1.CursorType = 0;
Recordset1.CursorLocation = 2;
Recordset1.LockType = 3;
Recordset1.Open();
var Recordset1_numRows = 0;
%>
<%
var Recordset2__MMColParam = "1";
if(String(Request.Form("select")) != "undefined") { 
  Recordset2__MMColParam = String(Request.Form("select"));
}
%>
<%
var Recordset2 = Server.CreateObject("ADODB.Recordset");
Recordset2.ActiveConnection = MM_connsilcon_STRING;
Recordset2.Source = "SELECT * FROM Site WHERE klant_code = "+ Recordset2__MMColParam.replace(/'/g, "''") + "";
Recordset2.CursorType = 0;
Recordset2.CursorLocation = 2;
Recordset2.LockType = 3;
Recordset2.Open();
var Recordset2_numRows = 0;
%>
<%
var Recordset3 = Server.CreateObject("ADODB.Recordset");
Recordset3.ActiveConnection = MM_connsilcon_STRING;
Recordset3.Source = "SELECT onderhoud_code, datum, beschrijving, prijs, opmerking, gefactureerd, Site.site_code, Onderhoud.site_code  FROM Onderhoud, Site  WHERE Onderhoud.site_code = Site.site_code";
Recordset3.CursorType = 0;
Recordset3.CursorLocation = 2;
Recordset3.LockType = 3;
Recordset3.Open();
var Recordset3_numRows = 0;
%>

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:41

gorgi_19

Kruimeltjes zijn weer op :9

code:
1
Recordset3.Source = "SELECT onderhoud_code, datum, beschrijving, prijs, opmerking, gefactureerd, Site.site_code, Onderhoud.site_code  FROM Onderhoud, Site  WHERE Onderhoud.site_code = <b>Site.site_code</b>";

Yup, in het vet gemaakte gedeelte zit de fout. Deze moet je vervangen door een variabelen (zoals aan het einde van de andere recordsets)

Mijn JScript (waarin het geschreven is) en niet best en ik mis de rest van het script, zodat ik geen oplossing kan geven. Alleen kan ik aangeven dat daar het probleem is en je dat (=vet gemaakte gedeelte) moet wijzigen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Rody
  • Registratie: Juni 2000
  • Laatst online: 01-08 10:13
Op woensdag 12 juni 2002 20:17 schreef nxt het volgende:
misschien dat dit wel werkt?
code:
1
2
3
SELECT onderhoud_code, datum, beschrijving, prijs, opmerking, 
gefactureerd, Site.site_code, Onderhoud.site_code
FROM Onderhoud INNER JOIN Site ON Onderhoud.site_code = Site.site_code
nee helaas, dan krijg ik ook alle onderhoudsgegevens.

de rest van de code (stom dat ik het niet gelijk erbij heb gedaan |:(
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr> 
    <td><%=(Recordset1.Fields.Item("klant_code").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("bedrijfsnaam").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("adres").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("postcode").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("plaats").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("regio").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("telefoon").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("mobiel").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("fax").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("email").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset1.Fields.Item("contactpersoon").Value)%></td>
    </tr>
  </table>
  <p>&nbsp;</p>
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr> 
    <td><%=(Recordset2.Fields.Item("site_code").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset2.Fields.Item("domeinnaam").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset2.Fields.Item("naam").Value)%></td>
    </tr>
    <tr> 
    <td><%=(Recordset2.Fields.Item("klant_code").Value)%></td>
    </tr>
  </table>
  <p><%=(Recordset3.Fields.Item("onderhoud_code").Value)%></p>
  <p><%=(Recordset3.Fields.Item("datum").Value)%></p>
  <p><%=(Recordset3.Fields.Item("beschrijving").Value)%></p>
  <p><%=(Recordset3.Fields.Item("prijs").Value)%></p>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>
<%
Recordset1.Close();
%>
<%
Recordset2.Close();
%>
<%
Recordset3.Close();
%>

het lijkt mij dat onderhoudcode gematched moet worden met:
Recordset2.Fields.Item("site_code").Value
maar hoe :?
of kan dit niet :?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Wat dacht je van deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<%@LANGUAGE="JAVASCRIPT"%>
<!--#include file="Connections/connsilcon.asp" -->
<%
var klant_code;
if(String(Request.Form("select")) != "undefined")
{ 
  klant_code = String(Request.Form("select"));
}
%>
<%
var sqlKlant;
var rsKlant = Server.CreateObject("ADODB.Recordset");
var rsSite = Server.CreateObject("ADODB.Recordset");
var rsOnderhoud = Server.CreateObject("ADODB.Recordset");

strSQL = "SELECT klant_code, bedrijfsnaam, adres, postcode, plaats, regio, telefoon, mobiel, fax, email, contactpersoon " _
     & "FROM Klant " _
     & "WHERE klant_code = " + klant_code;
rsKlant.Open strSQL, MM_connsilcon_STRING, 3, 1;
'Code voor tonen klant
rsKlant.Close

strSQL = "SELECT * " _
     & "FROM Site " _
     & "WHERE klant_code = " + klant_code;
rsSite.Open strSQL, MM_connsilcon_STRING, 3, 1;

While Not rsSite.EOF
  'code voor tonen site
  strSQL = "SELECT onderhoud_code, datum, beschrijving, prijs, opmerking, gefactureerd, Site.site_code, Onderhoud.site_code " _
       & "FROM Onderhoud "_
       & "WHERE Onderhoud.site_code = " + CStr(rsSite.Fields("site_code"));
  rsOnderhoud.Open strSQL, MM_connsilcon_STRING, 3, 1;
  'code voor tonen onderhoud bij site
  rsOnderhoud.Close;

  rsSite.MoveNext;
Wend

rsSite.Close;
%>

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Of je gebruikt dit:
code:
1
Recordset3.Source = "SELECT onderhoud_code, datum, beschrijving, prijs, opmerking, gefactureerd, Site.site_code, Onderhoud.site_code  FROM Onderhoud, Site  WHERE Onderhoud.site_code IN (SELECT site_code FROM Site WHERE klant_code = "+ Recordset2__MMColParam.replace(/'/g, "''") + "";

  • Rody
  • Registratie: Juni 2000
  • Laatst online: 01-08 10:13
ok thnx peeps, het werkt

de query van robjansen heb ik gebruikt :)
Pagina: 1