[ASP] Generieke files voor insert,update,delete

Pagina: 1
Acties:

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 01:38
Ik wil voor mijn databaseapplicatie in ASP (Access database erachter, ong. 15 tabellen) een aantal generieke bestanden maken voor toevoegen, wijzigen en verwijderen van records.

Voor het verwijderen van records heb je in principe 3 argumenten nodig:
- Tabelnaam
- Veldnaam
- Sleutel in Veldnaam
Het SQL-statement wordt dan zoiets "DELETE FROM Tabelnaam WHERE Veldnaam = Sleutel"

Voor het toevoegen en editen van records is meer informatie nodig, je moet dan precies weten hoeveel Requests.Forms cq. Request.QueryStrings er zijn binnengekomen. En daar gaat het bij mij fout. Kan iemand mij hier mee verder helpen?

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
strSql = "INSERT INTO eentabel ( "
For each bla in Request.Form
  strSql = strSql & bla & ","
Next
'komma te veel, even weghalen
strSql = Left( strSql, Len( strSql ) - 1 )
strSql = ") VALUES ( "
For each bla in Request.Form
  If IsNumeric( Request.Form( bla ) ) Then
     strSql = strSql & Request.Form( bla ) & ","
  ElseIf IsDate( Request.Form( bla ) ) Then
     strSql = strSql & # & Request.Form( bla ) & "#,"
  Else
     strSql = strSql & & "'" &  Request.Form( bla ) & "',"
  End If
Next
'komma te veel, even weghalen
strSql = Left( strSql, Len( strSql ) - 1 )
strSql = strSql & ");"

Niet getest dus zal niet werken maar geeft wel een indicatie denk ik. ;)

  • oZy
  • Registratie: Juli 2001
  • Laatst online: 00:35

oZy

hmm ja das handig :) maar waarom moeten dat bestanden worden, ik maak altijd gewoon een cfg.inc.asp die ik overal bovenaan include, en daar zet ik dan wat functies in die ik gebruik. bijv:
code:
1
2
3
4
5
public function DelRecord(strTable, strPK, strID)
strSQL = "DELETE FROM " & strTable & " WHERE " & strPK & " = " & strID & ""
  conn.Execute strSQL, lngRecsAffected, adCmdText Or adExecuteNoRecords
  Set strSQL = Nothing
end function

en in je code doe je dan vrolijk <%DelRecord(news,id,3)%>

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Ik zou het via een label-waarde protocol oplossen. Je wil je tabelstructuur zoveel mogelijk onafhankelijk hebben van je scherm. Als jij de tabel structuur verandert, moet je nu verplicht alle schermen langs. In mijn oplossing blijft het scherm gewoon functioneren omdat je alleen die velden insert die in het scherm zijn opgegeven.

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 01:38
Op donderdag 04 april 2002 09:05 schreef oZy het volgende:
hmm ja das handig :) maar waarom moeten dat bestanden worden, ik maak altijd gewoon een cfg.inc.asp die ik overal bovenaan include, en daar zet ik dan wat functies in die ik gebruik. bijv:
code:
1
2
3
4
5
public function DelRecord(strTable, strPK, strID)
strSQL = "DELETE FROM " & strTable & " WHERE " & strPK & " = " & strID & ""
  conn.Execute strSQL, lngRecsAffected, adCmdText Or adExecuteNoRecords
  Set strSQL = Nothing
end function

en in je code doe je dan vrolijk <%DelRecord(news,id,3)%>
Op dit moment moet de gebruiker op een button klikken, waarna een JavaScript-functie wordt aangeroepen die een waarschuwing geeft. Negeert de gebruiker de waarschuwing dan wordt het form gesubmit. Als ik je goed begrijp, kun je de functie dus ook aanroepen in de JavaScript-functie (ik weet het verschil tussen client/server :) ).

Het form heeft als naam "frmTest_delete.asp" en als action "Test_delete.asp" (Nieuw ASP-bestand). Hoe kan ik dit met jouw code opvangen?

  • oZy
  • Registratie: Juli 2001
  • Laatst online: 00:35

oZy

Als het form correct is ingevuld, dan kom je dus op de 2e pagina. Nou, dan zet je ergens bovenin de functie (mooist is gewoon de standaard functies in een config file en die te includen waar nodig), en op het moment dat je wilt deleten doe je dus bijv: <%DelRecord(news,id,3)%>.

Heb ik nog een vraag aan goodielover: op wie reageer je eigenlijk, gert of mij? Ik vind het hoe dan ook een wat vage post, want zowel de oplossing van gert als die van mij zijn erg flexibel qua tabel structuur, en tenzij je de field/table names etc gaat veranderen hoef je ook niets aan deze functies te veranderen. Mocht je nou wel die benamingen gaan veranderen, dan ben ik benieuwd naar jouw oplossing waar je over praat :)
Pagina: 1