| |
VB & DatenbankenPer ADO und Array Datensätze schreiben | | | Autor: Christian Peters | Datum: 16.12.04 16:39 |
| Servus,
ich habe gerade mit Hilfe des Tips http://www.vbarchiv.net/archiv/tipp_1125.html meine DB (62 Felder) zu füllen. MIr schien es nur ein wenig aufwendig einen rießigen Code zu bauen um alle 62 Felder und alle 62 Werte per Array(..., ...) einzustragen.
Also dachte ich mir, erzeuge ich doch einfach einen rießen String und mache den per Array(smString) zum passendem Array.
Leider klappte das nie.
Hat jemand ne Idee wie ich das hinbekomme?
Danke,
Chris | |
Re: Per ADO und Array Datensätze schreiben | | | Autor: Zero-G. | Datum: 16.12.04 17:50 |
| Meinst Du vielleicht, alle Felder dynamisch aufzubauen?
Du kannst jedem Control einen "Tag" Wert zuweisen.
z.B Für SQL - Also Du hast z.B. ein Textfeld mit dem Namen txtName - das soll per SQL abgefragt werden - dann kannst Du dem txtName den Tagwert der SQL Datenbank geben also z.B. Tag = Name
& dann kannst Du Dir natürlich den SQL Dynamisch aufbauen
Also:
If txtName.Text<> "" Then
sSQL = sSQL & txtName.Tag & " = " & txtName.Text & " AND "
End If Das musst Du einmal für alle 62 Felder als Code schreiben - dann ist es aber egal welches Feld Du ansprichst - der SQL passt immer.
Es gibt vom Dieter diesbezüglich auch einen sehr guten Tipp - hab ihn aber leider jetzt nicht gefunden.
Ich hoffe - das ist es was Du gemeint hast - wenn nicht Sorry
mfg | |
Re: Per ADO und Array Datensätze schreiben | | | Autor: Christian Peters | Datum: 17.12.04 07:36 |
| Danke für den TIP aber mir geht es nicht darum einen SQL-String dynamisch zu erzeugen, das kann ich schon.
Es geht darum die felder ohne SQL in ein Recordset zu bekommen. Dafür kann man entwerder jedes einzelne Feld füllen oder über den Weg gehen den der Tip beschreibt den ich verlinkt habe.
Ich möchte nur folgendes bei dem Tip autauschen:
call omRec.Update(Array("Feld_1", "Feld_2", "Feld_3", ...), _
Array("Inhalt_1", CLng(Inhalt_2), CDate(Inhalt_3), ...)) durch
call omRec.Update(vmFields(), vmContent()) wobei ich die Arrays vmFields() und vmContent() natürlicih vorher füllen möchte.
Nur irgendwie klappt das nicht und ich will wissen warum das so ist.
Chris | |
Re: Per ADO und Array Datensätze schreiben | | | Autor: Zero-G. | Datum: 18.12.04 13:30 |
| Hey Cris
Der Update Befehl kanns ich meines Wissens immer nur auf ein bestimmtes Feld beziehen. (in diesem Fall). - Deshalb geht das Array hier nicht - wenn Du es als AddNew machst, müsste es funktionieren.
Aber warum nicht per SQL? - Das hat schon Vorteile - und ob Du 62 mal ein Array füllst, oder 62 mal ein SQL Statement bleibt ja egal (vom Programmieraufwand) - Und übersichtlicher ist das Ganze auch.
Denk mal Du musst in 5 Monaten da etwas umbasteln - viel spass beim wieder einlesen....
mfg | |
Re: Per ADO und Array Datensätze schreiben | | | Autor: Christian Peters | Datum: 20.12.04 08:04 |
| Hallo Zero,
das mit dem SQL habe ich auch schon überlegt. Man solls aber nicht glauben, bei ADO+MS Access ist der Recordset schneller (Wenn auch nicht vertrauenswürdiger).
Das mit dem Update und dem AddNew kann ich leider auch nicht ganz nachvollziehen denn der Update-Befehl wird ja immer ausgeführt (egal ob Edit oder AddNew), der Unterschied ist doch nur das ich zuvor einen neuen, leeren Datensatz erzeugt habe den ich nun mit neuen Daten "Updaten" will.
Chris | |
Re: Per ADO und Array Datensätze schreiben | | | Autor: Zero-G. | Datum: 20.12.04 12:49 |
| Hey
Auch wenn die Recordset Methode schneller ist als SQL würde ich davon mal weggehen - 2 Gründe: Den ersten hast schon selber geschrieben - nicht wirklich vertrauenswürdig - Der 2. Grund: Wenn Du mal umsteigen möchtest auf ein anderes DB Format - bist mit SQL voll dabei!
Ich kann mir schon vorstellens, dass da ein Unterschied ist zwischen Update & AddNew
Bei AddNew wird der komplette DBSPeicher freigesetzt und danach werden die Felder aktualisiert. - Bei ändern wird erst der DBSpeicher zur Verfügung gestellt (des Records) wenn er angesprochen wird - also durch angabe des Feldes!
mfg | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|