[MSSQL - VBs] - prevod mezi tabulkami.

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Matysek 21. 3. 2006 21:17

Zdravim.

Marne si lamu hlavu, jak prenesu data za stare verze (source) do nove verze (destination). Indexi jsou rodne cislo a datum.

Mam tabulky:
Dekurs, ktera obsahuje sloupce:
Pacient, datum, subj, obj, vaha, vyska atd....

Mam napsane klasicke SQL Query takto:
Kód: Vybrat vše
SELECT     *
FROM         DEKURS
WHERE     (Pacient LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]%')
AND (DATEVALUE(Datum) LIKE '[1-3][0-9].[1][0-9].[1-2][0-9][0-9][0-9]'
OR
                      DATEVALUE(Datum) LIKE '[1-9].[1][0-9].[1-2][0-9][0-9][0-9]'
OR
                      DATEVALUE(Datum) LIKE '[1-3][0-9].[1-9].[1-2][0-9][0-9][0-9]'
OR
                      DATEVALUE(Datum) LIKE '[1-9].[1-9].[1-2][0-9][0-9][0-9]')
AND (Datum IS NOT NULL) AND (Pacient IS NOT NULL)


a zacinam si prevadet polozku po polozce:
Pacient je pravaden takto:

Kód: Vybrat vše
'  Copy each source column to the destination column
Function Main()
   IF Len( DTSSource("Pacient" )) <= 6 THEN DTSDestination("Rodne") = DTSSource("Pacient") END IF
   IF Len( DTSSource("Pacient" )) >= 7 THEN   DTSDestination("Rodne") = Left( DTSSource("Pacient") , 6 ) + Right( DTSSource("Pacient") , Len( DTSSource("Pacient") ) - 7 ) END IF
   Main = DTSTransformStat_OK
End Function


Datum prevadim takto:
Kód: Vybrat vše
'  Copy each source column to the destination column
Function Main()
   IF  ISNULL (DTSSource("Datum"))  THEN DTSDestination("Datum") = "1.1.1900" & DTSGlobalVariables("Time").Value & DTSGlobalVariables("Sekunda").Value END IF
   IF NOT ISNULL (DTSSource("Datum")) THEN DTSDestination("Datum") = DTSSource("Datum") & DTSGlobalVariables("Time").Value & DTSGlobalVariables("Sekunda").Value END IF
   IF DTSGlobalVariables("Sekunda").Value < 60 THEN  DTSGlobalVariables("Sekunda").Value = DTSGlobalVariables("Sekunda").Value +1 END IF
   IF DTSGlobalVariables("Sekunda").Value = 60 THEN DTSGlobalVariables("Sekunda").Value =10 END IF
   Main = DTSTransformStat_OK
End Function


Subjektivne:
Kód: Vybrat vše
Function Main()
   DTSDestination("Subj") = DTSSource("Subj")
   Main = DTSTransformStat_OK
End Function


Objektivne:
Kód: Vybrat vše
Copy Column


Problem je ten, ze potrebuji dostat do Dekursu, presneji subjektivni casti onen text, ktery je zacina jinym dlouhym textem, pote nasleduje obsah pole subjektivni a toto pole je zakonceno jeste dalsim dlouhym textem.

Pri testu v ramci MSSQL Ent. Managera mi toto probehne zcela korektne, ale pri prohlednuti obsahu tabulky jsou pole subj NULL.
Problem je, ze si nedokazi napsat ActiveX ve VBS nebo i Jave prevodnik, ktery mi tohle udela a soucane umi pracovat s takto dlouhym polem. Pokazde, kdyz si napisu jednoduchy scriptik takto:

Vloz ZACATEK a za to si nakopiruj OBSAH SUBJ a za to vloz KONEC, kdy mam jak ZACATEK tak i KONEC dva "dlouhe texty", ktere jsou porad stejne, mi vyhodi chybu, jelikoz to nedokaze.
Spatne je to, ze nemohu si vytvorit dalsi docasnou tabulku, do ktere si to naskladam a pote si to vyberu, nebot se toto bude provadet u klientu a nezle na MSDE toto provect. Druhym oriskem je i zkutecnoct, ze se ve stejne dobe provadi dalsich X prevodu a toto musi jit soubezne.

Napada me zkusit vlozit do dotazu dalsi dotaz, coz v praxi nemusi fungovat. JS/VBS je omezeny a nemohu jit pres funkce, ktere nejsou soucasti, stejne jako nemohu jit externe, protoze tato cast je jen jedna z mnohe podpolozek celkoveho scriptu prevodu dat. Druha vec, ktera velmi omezuje je fakt, ze stara DB je Paradoxacka.

Nenasel by se nekdo, kdo by vedel, jak dostanu pred libovolne dlouhy text dalsi libovolny text pred a za ?

Diky


Edit:
UPDATE .... atd mi funguje vsude jinde, nez v MSSQL :-)
Definice moderatora Zive? Zookeeper. Vyhledat zbloudilou ovecku, ustajit, vycesat, nakrmit a zalozit chudince nadaci. Ovecka prece nemuze 5 minut myslet. Vsichni mame povinnost oveckam uvarit, precist pohadku a prispet do nadace.
Matysek
Expert
Uživatelský avatar

Odeslat příspěvekod Matysek 22. 3. 2006 15:45

Vyreseno.... je to jen ma debilita, ze mne nenapadlo, kdyz uz nejde pridat do nove, jde pridat do stare :mrgreen:

hold se clovek porad plete :roll:
Definice moderatora Zive? Zookeeper. Vyhledat zbloudilou ovecku, ustajit, vycesat, nakrmit a zalozit chudince nadaci. Ovecka prece nemuze 5 minut myslet. Vsichni mame povinnost oveckam uvarit, precist pohadku a prispet do nadace.
Matysek
Expert
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků