PDA

Vollständige Version anzeigen : Tabelle kuerzen?


krijeck
28.03.2006, 13:19
Hallo!

ich habe zwei Tabellen, wobei in beiden Tabellen eine Spalte fuer das Datum zuständig ist (leider unterschiedliche Formate 20060222083031 und einmal 2006-02-22 00:00:08.000 aber dafuer hab ich schon einen VB Code geschrieben, der in alle verschiedenen Formate die ich hab umwandelt). Jetzt ist es so, dass eine der beiden Tabellen ein kuerzeres Zeitintervall abdeckt als die andere Tabelle! Ich brauch jetzt eine Funktion in VB (denke das geht nur in VB oder wenn das auch in SQL geht wärs mir auch recht ;) !?!) die mir die längere Tabelle auf genau die Länge (Zeitintervall) kuerzt die ich brauch!!! Geht das und wenn ja wie? Ich muss ja wenn ich das in VB mach einen teil vom beginn der einen Tabelle löschen und einen Teil am Schluss!? :entsetzt:

Locutus
28.03.2006, 13:44
Hi,
wenn das jetzt eine einmalige Aktion ist, würde ich das mit einer Löschabfrage erledigen:
Such Dir das Datumsminimum und Maximum der kurzen Tabelle und lösche aus der langen Tabelle alles kleiner MinvonDatum und größer MaxvonDatum. Damit der Datumsvergleich hinhaut, müssen die Datumsfelder ein vernünftiges Datumsformat haben (z.B. Standarddatum)
Gruß
Jörn

krijeck
28.03.2006, 13:47
So das ist jetzt mal ein erster versuch von mir! nur leider war dann die ganze Tabelle leer! ;)

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Public Function</span> cutTimeOff(startTime <span class="TOKEN">As</span> String, endTime <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="TOKEN">On Error GoTo</span> myError
<span class="TOKEN">Dim</span> X, Y <span class="TOKEN">As</span> <span class="TOKEN">String</span>
&nbsp;
X = fctDateC(startTime, 0, 1)
Y = fctDateC(endTime, 0, 1)

CurrentDb.Execute &quot;DELETE FROM london_data WHERE date_1 &lt; 'X'&quot;
CurrentDb.Execute &quot;DELETE FROM london_data WHERE date_1 &gt; 'Y'&quot;
&nbsp;
myExit:
<span class="TOKEN">Exit Function</span>
cutTimeOff = 0 <span class="REM">' ON ERROR</span>
myError:
MsgBox Err.Description
<span class="TOKEN">Resume</span> myExit
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>

Die Funktion fctDateC liefert je nach den Parametern die angegeben sind das Datum in der entsprechenden Form zurueck! in diesem Fall convert von 20060201000001666 zu 2006-02-01 00:00:01.666!


Während ich das schreibe sehe ich grad deine Antwort Locutus! ;) Wie bekomme ich das Standarddatum (vor allem aus dieser form: 2006-02-01 00:00:01.666)?


Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Locutus
28.03.2006, 14:00
Wäre es nicht einfacher, date_1 ebenfalls in das Format 20060201000001666 zu bringen? Der Code würde sich damit verkürzen aufPublic Function cutTimeOff(startTime As String, endTime As String) As Integer
On Error GoTo myError

CurrentDb.Execute "DELETE FROM london_data WHERE date_1 < clng(startTime)
CurrentDb.Execute "DELETE FROM london_data WHERE date_1 > clng(endTime )

myExit:
Exit Function
cutTimeOff = 0 ' ON ERROR
myError:
MsgBox Err.Description
Resume myExit
End Function

krijeck
28.03.2006, 14:16
hmm... geht nicht. Was macht clng? Ich werd aus der Hilfe nicht schlau!
ich bekomme die Fehlermeldung Too few parameters. Expected 1.

ich will ja aus einer Tabelle loeschen in der das Format des Datums diese Form hat: 2006-02-22 00:00:08.000

Und als Vergleich hab ich aber nur: 20060222083031
Also ohne Millisec!

krijeck
28.03.2006, 14:46
wie kann ich in der Tabelle eine ganze Spalte (mittels meiner Funktion fctDateC()) mit VB ändern!?? mit update?? :rolleyes: