<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Access/MySQL Fragen: Workaround für Transaction ??? On ERROR ??? Sequence/Autowert ???</title>
    <link>http://forum.geizhals.at/feed.jsp?id=491303</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Access/MySQL Fragen: Workaround für Transaction ??? On ERROR ??? Sequence/Autowert ???</title>
      <link>http://forum.geizhals.at/t491303,4072052.html#4072052</link>
      <description>Meine Probleme habe ich mit Access - 2 Datenbanken (Frontend/Backend). Da ähnliche Probleme in MySQL existierten - können MySQLler sicher auch helfen...&lt;br&gt;&lt;br&gt;In einem Eingabeformular erfasse ich diverse Werte - und durch die Applikation werden dann i.d.F. diverseste Tabellen befüllt. Derzeit ist der Ablauf wie folgt:&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
 - Insert into Tabelle1 (a,b,c )VALUES (a1,b1,c1) # Stammdaten befüllen&#xD;
 - select ID from Tabelle1 where a=a1 and b = b1 and c = c1; # ID der neuen Stammdate holen&#xD;
 - Insert into Tabelle2 (fk_tabelle1, d,e,f,..) values (gefetchte_id_von_tabelle1, d1,e1,f1,...); # in andere Tabelle enitragen&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;Hier sehe ich mehrere Probleme:&lt;br&gt;1.) ACCESS und MySQL:&lt;br&gt;"Normal" würde ich das in eine Transaktion kapseln. Nachdem diese ja in Access bei verknüpften Tabellen nicht gehen - wie löst man das dann ? Schließlich hätte ich ja einen sinnlosen Datensatz in Tabelle1, wenn das Insert in Tabelle2 Fehlschlägt&lt;br&gt;&lt;br&gt;2.) Autowerte:&lt;br&gt;In einer "normalen" Datenbank &lt;br&gt; - hat Tabelle1 einen Defaultwert - nämlich den Nextval einer Sequence.&lt;br&gt; - liefert sequence.curval nicht den letzten systemweiten Wert einer Sequence - sondern den letzten Wert dieser meiner Session&lt;br&gt; - kann ich daher bequemst statt dem SELECT einfach sequence.curval verwenden...&lt;br&gt;Wie klappt das mit den Autowerten ? Muß ich wirklich Selecten, wie ich es als Workaround tat ? Gibt es sowas wie "curval" bei Autowerten - wenn ja, ist das Systemweit (dann wäre es ja eine Race-Condition) oder Session-bezogen ? Wenn nein - wie löst man das normal in Access ?&lt;br&gt;&lt;br&gt;3.) On ERROR:&lt;br&gt;Angenommen, ich baue meinen eigene Transaction-Sub für Arme:&lt;br&gt;Sie könnte &lt;br&gt; - einen Array von Statements bekommen&lt;br&gt; - einen curval (s.o.) aller ID-Spalten aller Tabellen ermitteln&lt;br&gt; - LOOP&lt;br&gt; -&amp;nbsp;&amp;nbsp; Mach_ein_statement()&lt;br&gt; -&amp;nbsp;&amp;nbsp; On ERROR ermittle_alle_curvals_höher_als_gespeicherte_curvals&lt;br&gt; - END LOOP&lt;br&gt;Könnte das klappen ? Das Persistenz-Problem wäre zwar weiterhin gegeben (wenn die App in der Sub abstürzt) - aber zumindest die logische Transaktionskapselung wäre da...&lt;br&gt;&lt;br&gt;Oder macht man das ganz anders ? &lt;br&gt;&lt;br&gt;On ERROR - Detailfrage:&lt;br&gt;Angenommen, ich habe&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
sub machwas()&#xD;
On Error goto Fehlerbehandlung&#xD;
mach_irgendwas()&#xD;
mach_was_anderes()&#xD;
exit sub&#xD;
Fehlerbehandlung:&#xD;
   msgbox "ALARM!"&#xD;
end sub&#xD;
&#xD;
sub mach_irgendwas()&#xD;
on Error goto Fehlerbehandlung&#xD;
tu_was()&#xD;
exit sub&#xD;
Fehlerbehandlung:&#xD;
recovere&#xD;
end sub&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;Dann habe ich ja den Zustand, daß ich - wenn in mach_was_anderes ein Fehler auftritt, die ON ERROR-Routine noch auf die Fehlerbehandlung in mach_irgendwas zeigt...&lt;br&gt;&lt;br&gt;On Error GOTO 0 zum Deaktivieren kann ich nicht sagen, denn dann würde die Fehlerbehandlung in machwas() deaktiviert...&lt;br&gt;&lt;br&gt;Wie löst man "gestapelte" Error-Handler in VB/Access ???&lt;br/&gt;</description>
      <pubDate>Mon, 16 Apr 2007 08:15:46 GMT</pubDate>
      <guid>http://forum.geizhals.at/t491303,4072052.html#4072052</guid>
      <dc:creator>googleDork</dc:creator>
      <dc:date>2007-04-16T08:15:46Z</dc:date>
    </item>
  </channel>
</rss>
