<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.access-codelib.net/skins/common/feed.css?207"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Access Code Library - Benutzerbeiträge [de]</title>
		<link>http://wiki.access-codelib.net/Spezial:Beitr%C3%A4ge/Andreas_Vogt</link>
		<description>Aus Access Code Library</description>
		<language>de</language>
		<generator>MediaWiki 1.15.1</generator>
		<lastBuildDate>Fri, 24 Apr 2026 11:20:16 GMT</lastBuildDate>
		<item>
			<title>Insert oder Update als Parameter-Abfrage</title>
			<link>http://wiki.access-codelib.net/Insert_oder_Update_als_Parameter-Abfrage</link>
			<description>&lt;p&gt;Andreas Vogt:&amp;#32;/* Variante für gespeicherter Abfrage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Code-Schnipsel]]&lt;br /&gt;
{{Hierarchy header}}&lt;br /&gt;
{{Info|text=&lt;br /&gt;
Der unten angeführte Code zeigt nur ein Prinzip und stellt keine fertige Lösung dar.&lt;br /&gt;
}}__NOTOC__&lt;br /&gt;
=== Ausgangssituation ===&lt;br /&gt;
Eine Insert- oder Update-Anweisung soll per VBA zusammengesetzt und mit Werten aus Variablen versorgt werden.&lt;br /&gt;
&lt;br /&gt;
=== Eingesetzte Elemente ===&lt;br /&gt;
* DAO.QueryDef&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
# QueryDef-Objekt erstellen&lt;br /&gt;
# Parameterwerte festlegen&lt;br /&gt;
# SQL-Anweisung ausführen&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Public Function ExecuteParamSQL(ByVal SqlText As String, _&lt;br /&gt;
                           ParamArray QueryParams() As Variant) As Long&lt;br /&gt;
&lt;br /&gt;
   Dim qdf As DAO.QueryDef&lt;br /&gt;
   &lt;br /&gt;
   Set qdf = CurrentDb.CreateQueryDef(&amp;quot;&amp;quot;, SqlText)&lt;br /&gt;
   &lt;br /&gt;
   Dim i As Long&lt;br /&gt;
   For i = 0 To UBound(QueryParams)&lt;br /&gt;
      qdf.Parameters(i) = QueryParams(i)&lt;br /&gt;
   Next&lt;br /&gt;
   qdf.Execute dbFailOnError&lt;br /&gt;
   ExecuteParamSQL = qdf.RecordsAffected&lt;br /&gt;
   qdf.Close&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Verwendung ====&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
anzahlDS = ExecuteParamSQL(&amp;quot;Parameters P1 Text(255), P2 int, P3 date; &amp;quot; &amp;amp; _&lt;br /&gt;
                           &amp;quot;insert into Tabelle (T, Z, D) Values ([P1], [P2], [P3])&amp;quot;, _&lt;br /&gt;
                           &amp;quot;abc&amp;quot;, 123, Now())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|text=&lt;br /&gt;
Bei Memofeldern kann es unter Jet/ACE zu Problemen kommen, wenn der Parameter-Text länger als 255 Zeichen ist.&lt;br /&gt;
Um dieses Problem zu umgehen, könnte statt DAO.QueryDef die ADODB-Variante mit ADODB.Command verwendet werden.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Variante für gespeicherter Abfrage ===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Public Function ExecuteParamQdf(ByVal QueryDefName As String, _&lt;br /&gt;
                           ParamArray QueryParams() As Variant) As Long&lt;br /&gt;
&lt;br /&gt;
   Dim qdf As DAO.QueryDef&lt;br /&gt;
   &lt;br /&gt;
   Set qdf = CurrentDb.QueryDefs(QueryDefName)&lt;br /&gt;
   &lt;br /&gt;
   Dim i As Long&lt;br /&gt;
   For i = 0 To UBound(QueryParams)-1 Step 2&lt;br /&gt;
      qdf.Parameters(QueryParams(i)) = QueryParams(i + 1)&lt;br /&gt;
   Next&lt;br /&gt;
   qdf.Execute dbFailOnError&lt;br /&gt;
   ExecuteParamQdf = qdf.RecordsAffected&lt;br /&gt;
   qdf.Close&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Verwendung ====&lt;br /&gt;
SQL der gespeicherten Abfrage: &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;Parameters P1 Text(255), P2 int, P3 date; &lt;br /&gt;
insert into Tabelle (T, Z, D) Values ([P1], [P2], [P3])&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendung mit Hilfsprozedur:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
anzahlDS = ExecuteParamQdf(&amp;quot;GespeicherteAbfrage&amp;quot;, _&lt;br /&gt;
                           &amp;quot;P1&amp;quot;, &amp;quot;abc&amp;quot;, _&lt;br /&gt;
                           &amp;quot;P2&amp;quot;, 123, _&lt;br /&gt;
                           &amp;quot;P3&amp;quot;, Now())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hierarchy footer}}&lt;/div&gt;</description>
			<pubDate>Mon, 06 Jan 2020 09:31:17 GMT</pubDate>			<dc:creator>Andreas Vogt</dc:creator>			<comments>http://wiki.access-codelib.net/Diskussion:Insert_oder_Update_als_Parameter-Abfrage</comments>		</item>
	</channel>
</rss>