SQL có chứa Function

behattieu

Member
Hội viên mới
Em có 1 câu lệnh dạng
ketnoi("Select MLD, fncchenhlech(tungay,denngay) from tbl_quatrinhcongtac")

với fncchenhlech là function được tạo ta trong module.
Tuy nhiên khi để trong query thì chaỵ được ngay, nhưng nhét vào cùng câu lệnh SQL thì báo lỗi
fncchenhlech is not a recognized function name.
Bác nào biết chỉ giáo với
 
Ðề: SQL có chứa Function

Vì để trong query thì Access sẽ thực hiện và trả về chuỗi SQL hợp lệ.
Còn để connection object thực hiện thì nó chỉ thực hiện ngôn ngữ SQL hợp lệ.

Nói cách khác, Access tích hợp các hàm riêng có của nó vào SQL và gọi thực thi.
Mỗi phần mềm khác nhau đều có nhúng các hàm của riêng nó vào SQL.
Ngôn ngữ SQL chỉ có vài hàm: SUM, MAX, MIN, AVG, COUNT
Đọc lại tài liệu ngôn ngữ SQL chuẩn 86 hay 92 gì đó.
 
Ðề: SQL có chứa Function

Nếu bạn xài SQL sever thì cú pháp của bạn sử dùng được đấy.
:votay:
 
Ðề: SQL có chứa Function

Em search trên mạng và thấy nói là có cách chạy cách function . Tuy nhiên hình như phải convert nó. Còn chạy không thì không được đâu bác ơi, may ra chỉ có CSDL là access thì chạy được thôi, còn nếu kết nối ADO với SQL thì nó báo lỗi
Thằng SQL: 'tenfunction' is not a recognized a function name
 
Ðề: SQL có chứa Function

Em search trên mạng và thấy nói là có cách chạy cách function . Tuy nhiên hình như phải convert nó. Còn chạy không thì không được đâu bác ơi, may ra chỉ có CSDL là access thì chạy được thôi, còn nếu kết nối ADO với SQL thì nó báo lỗi
Thằng SQL: 'tenfunction' is not a recognized a function name

Bạn nói sao vậy, SQL Server sử dụng cú pháp T-SQL, nó không gọi được function được tạo từ SQL Server thì còn làm cái gì được nữa?

Function trong SQL Server, nếu bạn có cài SQL Server 2000 trở lên, bạn mở Help coi cái funtion của nó ra sao: CREATE FUNCTION ... đó.

Nói đùa bạn chơi thôi, chứ cái việc bạn đưa function vào câu SQL trong Access hoàn toàn được, đâu có vấn đề gì, nếu bạn sử dụng DAO.Recordset, tạo một recordset bằng một sql string tương tự như của bạn, tôi vẫn lấy được kết quả.

Nếu bạn dùng ADODB.Recordset thì lúc đó sql string của bạn được hiểu theo T-SQL tức là ngôn ngữ SQL chuẩn của SQL Server. Và như thế function bạn đặt trong sql string, được hiểu như là một function bạn tạo từ SQL Server. Cái vấn đề của bạn là chỗ này.
 
Ðề: SQL có chứa Function

Em đã kiểm tra đi, kiểm tra lại rồi.
Với cùng một chương trình access, khi em cho nó kết nối ADO với 1 CSDL access khác thì em vẫn có thể đưa 1 function (được viết trong module) vào để chạy và kết quả thì OK. Tuy nhiên chỉ cần thay chuỗi kết nối từ access thành kết nối với 1 CDSL SQL thì thông báo lỗi ngay.
Rõ rằng là cái thằng SQL nó không hiểu cái function em đã viết trong module. Nhứ thế để cho nó hiểu được thì phải khai báo nó trong SQL chứ không phải khai báo nó tại chương trình ta đang sử dụng. Theo em hiểu là vậy, đúng không các bác.

PS: Bác phatnq2002 soi kinh quá, em thích s & l nên nhiều chỗ hay cho thêm vào:ibbanana:
 
Ðề: SQL có chứa Function

mình cũng gặp vấn đề này khi chạy câu lệnh query trong access
query này tạo trong access, có chứa hàm tự định nghĩa trong module của access

query này chạy trong access thì OK
nhưng từ ứng dụng khác, dùng ADO kết nối với file access này, rồi chạy query đó thì báo lỗi

trong sql server thì không bị lỗi: vì mình gọi hàm trong sql dạng: select dbo.tên_hàm_tự_chế(trường 1,trường 2) from...

nhưng trong access thì thử hoài vẫn chưa được.

không biết đã có cao thủ nào dùng access mà giải quyết được vấn đề này chưa?
 
Ðề: SQL có chứa Function

không biết có bạn nào đã tìm ra cách khác phục lỗi trên chưa? share cho ae học tập.
mình google hoài mà không ra, ae chỉ giúp mình với, xin cảm ơn


"mình cũng gặp vấn đề này khi chạy câu lệnh query trong access
query này tạo trong access, có chứa hàm tự định nghĩa trong module của access

query này chạy trong access thì OK
nhưng từ ứng dụng khác, dùng ADO kết nối với file access này, rồi chạy query đó thì báo lỗi"
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top