Wojciech
Z.
Diagnosta
laboratoryjny
Jakub
Boroch
Bazy Danych,
Projektowanie,
Analiza systemowa,
Programowanie
Temat: Wyciąganie fragmentu danych z komórki
WitamZałożenie:
Mamy jakas tabele (t1) z polem val.
W polu val mamy wartości np:
xxx 1
xxx yyy 23
zzz cc fgg 34
Założenie przed cyframi na końcu masz spację.
No to piszemy sobie kwerendę:
Wyr1: Right$([val];InStr(1;StrReverse([val]);Chr(32);1))
gdzie:
val to kolumna z tymi wartościami, chr(32) to znak spacji
a więc w skrócie: wycinamy od prawej z val wszytko do miejsca gdzie znajdzie spacje (od końca)
Można by jeszcze dodać validację czy to dostajemy to liczba.
Ps. W T-SQL to zajeło chwilę ale przepisac to do Accessa to już trochę dłużej (inne funkcję do obsługi ciągłów znakowych).
Widok SQL z Accessa:
SELECT t1.val, Right$([val],InStr(1,StrReverse([val]),Chr(32),1)) AS Wyr1
FROM t1;
Efekt
val Wyr1
xxx 2 2
xxxx yyyy 3 3
xxxx yyy zzz 34 34
Pozdr
KUBAJakub Boroch edytował(a) ten post dnia 21.12.09 o godzinie 13:54
konto usunięte
Temat: Wyciąganie fragmentu danych z komórki
klasa C_REG_EXPOption Compare Database
Private myRegExp As RegExp
Private myMatches As MatchCollection
Private myMatch As Match
Private oRegExp As Object
Private Sub Class_Initialize()
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
End Sub
Private Sub Class_Terminate()
Set myRegExp = Nothing
End Sub
Public Function GetId(sIn As String, sPattern As String) As String
myRegExp.pattern = sPattern
GetId = ""
Set myMatches = myRegExp.Execute(sIn)
For Each myMatch In myMatches
GetId = (myMatch.Value)
Exit Function
Next
End Function
w module (dowolnym)
Public C_REG_EXP As New C_REG_EXP
Public Function GetId(sIn As String) As Double
Dim sTmp As String
sTmp = C_REG_EXP.GetId(sIn, "[0-9]+")
GetId = 0
If IsNumeric(sTmp) Then
GetId = CDbl(sTmp)
End If
End Function
w kwerendzie
select GetId(k.tekst,'[0-9]+') as wynik from tabela as k
Wojciech
Z.
Diagnosta
laboratoryjny
Temat: Wyciąganie fragmentu danych z komórki
Dzięki za pomoc, niestety okazało się że w większości komórek spacje są również na końcu i wyrzuca wyniki tylko tak gdzie ich nie ma...a w przypadku rozwiązania Pana Przemysława nie wiem za bardzo gdzie mam wpisać nazwy tabeli i kolumny z której ma wyciągać dane...nie jestem niestety biegły w VBA
Jakub
Boroch
Bazy Danych,
Projektowanie,
Analiza systemowa,
Programowanie
Temat: Wyciąganie fragmentu danych z komórki
Witamjak spacje są na końcu to moze zwykly trim pomoże (usuwa spacje z poczatku i końca ciągu)
Wyr1: trim$(Right$(trim$([val]);InStr(1;StrReverse(trim$[val]));Chr(32);1)))
no chyba ze spację występują pomiędzy tymi cyframi które chcesz wyłuskać, no to trzeba by inaczej podejść do tematu.
Wojciech
Z.
Diagnosta
laboratoryjny
Temat: Wyciąganie fragmentu danych z komórki
Dzięki już działa!temat można uznać za zamkniętyPodobne tematy
-
Ms Access » Wyciąganie fragmentu danych z komórki -
-
Ms Access » wyciąganie danych z bazy MS SQL do formularza -
-
Ms Access » zawezenie zakresu danych w polu kombi -
-
Ms Access » Brak danych w tabeli i alternatywna wartość [laik] -
-
Ms Access » import danych po parametrze - access, vba -
-
Ms Access » Pobieranie danych z innej tabeli -
-
Ms Access » Wprowadzanie danych w układzie tabeli wielowymiarowej -
-
Ms Access » [Poczatkujacy] Pole Kombi jako źródło danych (formantu?) -
-
Ms Access » dołączanie danych z pliku html do nowych rekordów z datą... -
-
Ms Access » Baza danych biletomatu w kinie -
Następna dyskusja: