Auge: ASP MSAccess - input type file - wert in DB nicht ändern, wenn nichts verändert

Beitrag lesen

Hallo

Ich habe also eine Datenbank mit etlichen Einträgen für Technik und deren Eigenschaften. (PC, Marke, CPU, Arbeitsspeicher, Rechnung, etc. pp )

hierfür habe ich eine Seite erstellt, die mir alle eingetragenen Rechner und deren wichtigsten Daten zeigt, sowie eine Detailseite die nur einen Datenbankeintrag mit allen Werten anzeigt.

Auf der Detailseite habe ich ein INPUT TYPE FILE feld eingebunden, um den Pfad einer Rechnung anzuhängen. Diese Rechnungen liegen alle bereits im firmeneigenen Netzwerk, sodass ein tatsächlicher Upload Redundant und Sinnfrei wäre. Daher übergebe ich wie folgt lediglich den Pfad der gewählten Datei :

...…
<form action="PCspeichern.asp" method="post">
...…

<tr><td><b>Rechnungsnummer</b></td><td><input type="text" name="Rechnungsnummer" value="<%=(rs_Inventur.Fields.Item("Rechnungsnummer").Value) %>"</td> 
	<% IF rs_Inventur.Fields.Item("Rechnungspfad").Value <> "" THEN %><a href="<%=(rs_Inventur.Fields.Item("Rechnungspfad").Value) %>" target="_blank"><b><u>Rechnungsablage</u></b> </a> <% ELSE %> <b>Rechnungsablage</b> <% END IF %> 
	<form method="post"><input class="button" id="Rechnungspfad" name="Rechnungspfad" type="file" size="1" ></form><label for="Rechnungspfad"><% IF rs_Inventur.Fields.Item("Rechnungspfad").Value <> "" THEN %>Rechnung &auml;ndern<% ELSE %> Rechnung w&auml;hlen <% END IF %> </label></tr></form>

Abgeschickt wird über "PCSpeichern.asp"

` MM_editCmd.CommandText = "UPDATE PC_Technik SET Standort = ?, Strasse = ?, Art = ?, Bezeichnung = ?, Hersteller = ?, Lieferant = ?, Seriennummer = ?, Tag_Nummer = ?, Neupreis = ?, Anschaffungsdatum = ?, Anschaffungsart = ?, BA_Nummer = ?, Rechnungsnummer = ?, Rechnungspfad = ?, Bemerkungen = ?, Bildschirm = ?, Prozessor = ?, Taktung = ?, Arbeitsspeicher = ?, Festplattentyp = ?, Festplattengroesse = ?, Grafikkarte = ?, Grafikspeicher = ?, Soundkarte = ?, Schnittstellen = ?, Laufwerke = ?, Betriebssystem = ?, Office_Version = ?, Browser = ?, Zimmer = ?, Einsatz = ?, Mitarbeiter = ?, Netzwerkkarte = ?, MAC = ?, Anlagennummer = ?, interneNummer = ?, Virenscanner = ?, letzteAenderung = ? WHERE ID = " & Session("strID") & ""`

So, der Käse funktioniert sogar.

Da ALLE Daten beim Druck auf den "submit" abgeschickt werden, schickt auch der INPUT TYPE FILE einen Wert raus, selbst wenn ich nur, beispielsweise, Änderungen am Standort oder sonstigen Feldern vornehme. Und dieser Wert ist null. Das heißt, dass mein zuvor gespeicherter Link beim Ändern irgendeiner anderen Zeile mit nichts überschrieben wird. Das ist natürlich nicht so gewünscht 😂

Kann ich das irgendwie vorher abfragen?

Mit einer If-Else-Kontrollstruktur kannst du den String der SQL-Queries natürlich unterschiedlich erstellen, mal mit, mal ohne Aktualisierung des Dateipfades. Du kannst alternativ auch eine Stored Procedure auf dem SQL-Server aufrufen und dort herinnen die Unterscheidung vornehmen. Das hätte auf ASP-Seite den Vorteil eines in jedem Fall gleichen Vorgehens, du solltest dich dann aber auch mit den Möglichkeiten von T-SQL auf deiner SQL-Server-Version auskennen.

Tschö, Auge

--
Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
Hohle Köpfe von Terry Pratchett