Bronsson

New Member
bạn nào chỉ jùm mình xây dựng mấy hàm hay dùng trong access với: ví dụ như hàm chuẩn hoá xâu kí tự ấy. Nếu làm bằng C thì dễ rồi, chứ làm bằng VB thì chửa biết
 
Public Function Split(Ten As String, Kieu As Byte)Dim bytSpace As BytebytSpace = InStrRev(Ten, " ", -1)If bytSpace = 0 ThenSplit = TenExit FunctionEnd IfIf Kieu = 0 ThenSplit = Right(Ten, Len(Ten) - bytSpace)ElseSplit = Left(Ten, bytSpace - 1)End IfEnd FunctionGiải thích :public Function Split(Ten As String, Kieu As Byte) : Ten ở đây là chuỗi bạn muốn cắt, Kieu ở đây là kiểu cắt của bạn : 0 là tách tên, khác 0 là tách họbytSpace dùng để lấy khoảng trắng cuối cùng của chuỗi.Ví dụ : Table tblDanhSach có field Name. Dữ liệu :Thiên Mỹ Sao BăngHuỳnh Thu NhạnBạn làm ra (tạo) Query mới với Table này và gõ vào công thức : Split(Name,0) 'Kết quả làBăngNhạnCòn nếu bạn gõ Split(Name,1) 'Có thể thay số 1 bằng bất cứ số nào từ 1 đến 255. Kết quảThiên Mỹ SaoHuỳnh ThuĐể đơn giản hơn bạn có thể tách ra làm 2 hàm khác nhauPublic Function TachTen(Ten As String) As StringDim bytSpace As BytebytSpace = InStrRev(Ten, " ", -1)TachTen = Right(Ten, Len(Ten) - bytSpace )End FunctionPublic Function TachHo(Ten As String) As StringDim bytSpace As BytebytSpace = InStrRev(Ten, " ", -1)If bytSpace =0 thenTachHo = TenExit FunctionEnd IfTachHo = Left(Ten, bytSpace )End Functionvà dùng hàm TachTen khi cần tách tên, TachHo khi cần tách họVí dụ : TachTen("Lê Minh Tiến") -' + '-' + '-> TiếnTachHo("Lê Minh Tiến") -' + '-' + '-> Lê Minh
 
Trích:
Nguyên văn bởi isoomo Public Function Split(Ten As String, Kieu As Byte)Dim bytSpace As BytebytSpace = InStrRev(Ten, " ", -1)If bytSpace = 0 ThenSplit = TenExit FunctionEnd IfIf Kieu = 0 ThenSplit = Right(Ten, Len(Ten) - bytSpace)ElseSplit = Left(Ten, bytSpace - 1)End IfEnd FunctionGiải thích :public Function Split(Ten As String, Kieu As Byte) : Ten ở đây là chuỗi bạn muốn cắt, Kieu ở đây là kiểu cắt của bạn : 0 là tách tên, khác 0 là tách họbytSpace dùng để lấy khoảng trắng cuối cùng của chuỗi.Ví dụ : Table tblDanhSach có field Name. Dữ liệu :Thiên Mỹ Sao BăngHuỳnh Thu NhạnBạn làm ra (tạo) Query mới với Table này và gõ vào công thức : Split(Name,0) 'Kết quả làBăngNhạnCòn nếu bạn gõ Split(Name,1) 'Có thể thay số 1 bằng bất cứ số nào từ 1 đến 255. Kết quảThiên Mỹ SaoHuỳnh ThuĐể đơn giản hơn bạn có thể tách ra làm 2 hàm khác nhauPublic Function TachTen(Ten As String) As StringDim bytSpace As BytebytSpace = InStrRev(Ten, " ", -1)TachTen = Right(Ten, Len(Ten) - bytSpace )End FunctionPublic Function TachHo(Ten As String) As StringDim bytSpace As BytebytSpace = InStrRev(Ten, " ", -1)If bytSpace =0 thenTachHo = TenExit FunctionEnd IfTachHo = Left(Ten, bytSpace )End Functionvà dùng hàm TachTen khi cần tách tên, TachHo khi cần tách họVí dụ : TachTen("Lê Minh Tiến") -' + '-' + '-> TiếnTachHo("Lê Minh Tiến") -' + '-' + '-> Lê Minh
Xin lũy với các bạn một "chiêu" mèo quào như sau:Trong VB có một lệnh gọi là lệnh Split (y chang tên hàm của bạn).Hàm cho này cho tách một chuỗi ra thành nhiều chuỗi con, mỗi chuỗi con sẽ được lưu vào trong một phần hi sinh mảng.Vậy để lấy tên của một chuỗi họ tên, ta cũng có thể dùng cách này:Sub TachHoTen(ByVal chuoi As String, ByRef ho As String, ByRef ten As String)Dim ar() As Stringar = Split(chuoi, " ")Dim i As Integer, mHo As StringFor i = 0 To UBound(ar)-1 mHo = Trim(mHo & " " & ar(i))Nextho = mHoten = ar(UBound(ar))End SubTrong đó:Từ khóa ByRef chỉ định tham số truyền vào sau kh được xử lý sẽ được thay đổi luôn trong thủ tục hay hàm gọi TachHoTenVD: Đây là đoạn chương trình gọi:Dim ho As String, ten As String ' lúc này họ và tên là các chuỗi rỗngDim hoten As Stringhoten = "Nguyen Van Sau Rieng"TachHoTen hoten, ho, ten...Sau khi chạy TachHoten thì ho = "Nguyen Van Sau", còn ten = "Rieng"UBound là hàm lấy chỉ số cao nhất của mảng. UBound = số phần hi sinh mảng - 1Tất nhiên trên đây chỉ là các lệnh cơ bản, tùy các bạn thêm mắm muối vào.
 
Bạn thêm hàm Trim(Ten) trước khi thực hiện các dòng lệnh. Chương trình sẽ lỗi khi nhập thừa khoảng trắng. VD: ?Split("Le " , 0).
 

habo_milk

New Member
uhm, mình biết hàm Ltrim là cắt bỏ tất cả kí tự trắng bên trái, hàm Rtrim là cắt bỏ tất cả kí tự trắng bên phải, hàm Trim là cắt bỏ tất cả kí tự trắng ở bên trái và bên phải. Vậy có hàm nào để cắt bỏ kí tự trắng ở giữa không? Ví dụ như nhập tên:Huỳnh Thu Nhạn. thì nó sẽ cắt thành Huỳnh Thu Nhạn
 

darkhero_hn

New Member
Topic này hay đây, là nơi tập hợp các hàm dùng sẵn, khi nào anh em cần thì có thể vào đây tham chiếu nhanh. SND chưa có hàm nào hay cả, sẽ ngâm cứu cùng các you!
 

xay_za

New Member
các bạn ơi cho mình hỏi cách tắt hẳn thông báo : the existing table "tên bảng" will be deleted before you run the query
 

Neal

New Member
Trích:
Nguyên văn bởi omoosi các bạn ơi cho mình hỏi cách tắt hẳn thông báo : the existing table "tên bảng" will be deleted before you run the query
Cái này là do bạn chạy query Make-Table trong Access.Với các table loại Actin query bao gồm: Make-Table, Update, Append, Delete đều sẽ hiển thị thông báo hỏi trước khi thực thi.Để tắt các thông báo này bạn có thể chèn các câu lệnh sau:Cách 1: Trường hợp bạn cho chạy query bằng cách OpenQueryDoCmd.SetWarnings FalseDoCmd.OpenQuery "tên query"DoCmd.SetWarnings TrueCách 2: Thực thi query bằng cách Excecute. Cách này nó sẽ bất hỏi gì cả, nhưng sẽ báo lỗi nếu bất thực hiện được.Dim qr As QueryDef, st As StringSet qr = CurrentDB.QueryDefs("tên query")st = qr.SQLSet qr = NothingCurrentDB.Execute st
 

Mayfield

New Member
Ngại quá lại phải nhờ tới tất cả người roài!Mình làm ra (tạo) queries có 2 trường: thời (gian) gian (tháng), thời (gian) gian bắt đầu lấy từ 1 bảng vừa có sẵnMuốn thêm các trường thời (gian) gian kết thúc và thời (gian) gian còn lại mà bất biết làm-> thời (gian) gian kết thúc được suy ra từ thời (gian) gian bắt đầu + thời (gian) gian. -> thời (gian) gian còn lại (ngày) được suy ra từ date() - thời (gian) gian kết thúcVD: thời (gian) gian: 3 tháng Thời gian bắt đầu: 12/10/2008 -> Thời gian kết thúc: 12/01/2009 date() = 12/12/2008 -> Thời gian còn lại : 30 ngàyThanks
 

tjnna_pu

New Member
Trích:
Nguyên văn bởi omoosi Ngại quá lại phải nhờ tới tất cả người roài!
Mình làm ra (tạo) queries có 2 trường: thời (gian) gian (tháng), thời (gian) gian bắt đầu lấy từ 1 bảng vừa có sẵn
Muốn thêm các trường thời (gian) gian kết thúc và thời (gian) gian còn lại mà bất biết làm
-> thời (gian) gian kết thúc được suy ra từ thời (gian) gian bắt đầu + thời (gian) gian.
-> thời (gian) gian còn lại (ngày) được suy ra từ date() - thời (gian) gian kết thúc
VD: thời (gian) gian: 3 tháng
Thời gian bắt đầu: 12/10/2008
-> Thời gian kết thúc: 12/01/2009
date() = 12/12/2008
-> Thời gian còn lại : 30 ngày
Thanks
You dùng hàm Datediff("date",NgayA,ngayB) -' + '-> Số ngày
 

le.thehien

New Member
Hàm dateadd thì mình biết rồi nhưng kết quả ra bất đúng có lẽ do mình định dạng ngày sai.Nhưng hàm datediff("d",thoigiancuoi,thoigiandau) thì bất được bất ra số ngày cần tính, mà bất biết nó tính kiểu gì nữa
 

Fillmore

New Member
Trích:
Nguyên văn bởi omoosi Hàm dateadd thì mình biết rồi nhưng kết quả ra bất đúng có lẽ do mình định dạng ngày sai.
Nhưng hàm datediff("d",thoigiancuoi,thoigiandau) thì bất được bất ra số ngày cần tính, mà bất biết nó tính kiểu gì nữa
Hàm datediff ("d",ngaydau,ngaycuoi)-' + '-> số ngày giữa 2 ngày đầu và cuối. Chú ý định dạng ngaydau và ngaycuoi là kiểu date. Nếu chưa định dạng thì thêm hàm định dạng ngày vào trước ngaydau và ngaycuoi cho chắc chắn.
 

vophilong76

New Member
Mình thấy hàm không hiệu hoá phím Shift này trên mạng nhưng bất hiểu cách làm như thế nào? Mong chỉ dẫnTrong file dữ liệu cua Access có một thuộc tính (Property) đặc biệt là AllowbypassKey. Khi đặt thuộc tính này là False, chuyện nhấn phím shift khi khởi động sẽ bất còn tác dụng nữaThuộc tính này bất thể hịên trên cửa sổ Startup Properties và chỉ có thể thay đổi bằng code mà thôi-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '- Call ChangeProperty "AllowBypassKey", dbBoolean, False Function ChangeProperty(strPropName As String, _ varPropType As Variant, _ varPropValue As Variant) As Integer ' Purpose : Change Database Properties ' Created : 23 March 00 Dim dbs As Database, prp As Property Const conPropNotFoundError = 3270 Set dbs = CurrentDb On Error GoTo Change_Err dbs.Properties(strPropName) = varPropValue ChangeProperty = True Change_Bye: Exit Function Change_Err: If Err = conPropNotFoundError Then Set prp = dbs.CreateProperty(strPropName, _ varPropType, varPropValue) dbs.Properties.Append prp Resume Next Else ChangeProperty = False Resume Change_Bye End If End Function
 

pndh_91

New Member
Việc không hiệu phím Shift thì người ta lại cho phép xem cửa sổ database bằng cách cho phép phím Shift, thì bạn viết code không hiệu phím Shift làm gì?Nhấn Alt+F11 và làm ra (tạo) hàm mớiChọn Tool/ Pre.../Chọn Microsoft DAO 3.6Public Function ChayShift(TenFile)'Tenfile co the la: "C:\\X.mdb" Dim dbs As DAO.Database Set dbs = DBEngine.OpenDatabase(TenFile) dbs.Properties("AllowBypassKey").Value = True Set dbs = NothingEnd FunctionNhấn Ctrl+G thử hàmNhập ?ChayShift("C:\\X.mdb")
 

marc_clara

New Member
uh. Mình biết là có cách tắt không hiệu hoá phím shift nhưng bất nghĩ là đơn giản vậy. Vậy ngoài cách chuyển sang MDE, và không hiệu hoá phím shift thì còn cách nào để ngăn chặn người dùng xem code không?
 

tung_peter

New Member
Trích:
Nguyên văn bởi isoomo uh. Mình biết là có cách tắt không hiệu hoá phím shift nhưng bất nghĩ là đơn giản vậy. Vậy ngoài cách chuyển sang MDE, và không hiệu hoá phím shift thì còn cách nào để ngăn chặn người dùng xem code không?
Chào Bạn,Chỉ có cách cho biên dịch ứng dụng sang định dạng MDE mới ngăn triệt để người khác xem code trong file ứng dụng.Những cách khác như: đặt password, phân quyền (user-level security) đều chỉ là tương đối vì: hiện nay có rất nhiều công cụ dò password, thậm chí không hiệu hoá password mà bất phải mất công dò chi cho mệt. các bạn có thể search bằng Google sẽ tìm thấy không vàn những công cụ dạng này.
 

baothusinh

New Member
Trong khi lập trình file .mdb có thể đặt password bất cho xem code nhưng vẫn mở file và sửa chữa bình thường:Nhấn Alt+F11, chọn Tool, chọn _Properties, chọn Protection, Lock..., nhập Password.Bằng cách làm ra (tạo) Pass như trên bạn có thể cho người khác xem file mdb, chỉnh sửa thết kế, nhưng bất xem đuợc code và họ cũng bất import form và module của bạn được. Bạn cần bảo vệ file mdb trong quá trình thiết kế.
 

abc_304

New Member
mình vừa làm ra (tạo) 1 form hiển thị thông tin lấy dữ liệu có sẵn từ bảng nhưng bất hiểu sao nó chậm quá. Mình nghĩ là cơ sở dữ liệu của mình tốt bất bị dư thừa. Vậy có cách nào cho hiển thị nhanh hơn không?
 

Các chủ đề có liên quan khác

Top