HỎI VỀ ĐỊA CHỈ TRUY VẤN 1 Ô TRONG Access? (5 người xem)

  • Thread starter Thread starter nad582
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

nad582

Thành viên thường trực
Tham gia
7/6/11
Bài viết
317
Được thích
48
Chào các a(c) trong GPE, trong Excel thì địa chỉ của 1 ô thì e biết đc. ví dụ: A1, range("A1") or cells(1,1). Nhưng trong Access thì e không biết được vì nó không hiện ra tên cột và hàng, như vậy trong Access e chỉ biết được địa chỉ của một [trường] thôi. ví dụ:
View attachment 124871
như trên hình, để tìm (chọn) trường [Frame] thì công thức là:
SELECT [Frame] FROM [Element Forces - Frames] có nghĩa là chọn hết dữ liệu của cột (trường) [Frame]
như vậy muốn chọn 1 ô View attachment 124872(tô màu) trong cột (trường) [Frame] thì công thức như thế nào?
xin chân thành cảm ơn!!
 
Trong Access các "Ô" như bạn mô tả đó là giao của Record và Field tất nhiên sẽ có trường quy định Key để tránh trùng lặp. Vậy để chọn 1 giá trị bạn chỉ cần dùng truy vấn chỉ ra 2 yếu tố đó

Truy vấn có dạng:
Mã:
Select [Frame] From [COLOR=#000000] [Element Forces - Frames] Where [B][Trường Key] = Key[/B]][/COLOR]
 
Trong Access các "Ô" như bạn mô tả đó là giao của Record và Field tất nhiên sẽ có trường quy định Key để tránh trùng lặp. Vậy để chọn 1 giá trị bạn chỉ cần dùng truy vấn chỉ ra 2 yếu tố đó

Truy vấn có dạng:
Mã:
Select [Frame] From [COLOR=#000000] [Element Forces - Frames] Where [B][Trường Key] = Key[/B]][/COLOR]
vậy a có thể giải thích cho e biết cụ thể hơn không?
làm sao để biết [Trường Key] là gì? và Key là gì? không!! lấy ở đâu ra! Tóm lại là làm sao biết [Trường Key] Key trong bài #1 của mình

chân thành cảm ơn!!
 
Lần chỉnh sửa cuối:
vậy a có thể giải thích cho e biết cụ thể hơn không?
làm sao để biết [Trường Key] là gì? và Key là gì? không!! lấy ở đâu ra! Tóm lại là làm sao biết [Trường Key] Key trong bài #1 của mình

chân thành cảm ơn!!

Bạn đưa mấy cái hình ảnh lên thì chịu không thể giải thích được cho bạn.

Nhưng bạn thử như thế này thì biết "Trường Key" (cái này tôi gọi cho dễ hiểu thôi nhé)

- Bước 1: bạn mở một Table lên
- Bước 2: chuyển table đó về chế độ Design, bạn quan sát cạnh bên trái, dòng nào có hình cái khoá đó là Key

Access mạnh hơn Excel về quản lý cơ sở dữ liệu. Bạn quản lý được dạng dữ liệu nhập cho từng trường, bạn quản lý được khoá của từng trường. Với trường key bạn không thể nhập trùng dữ liệu được đây là cái khoá để bạn tìm ra giá trị mong muốn.

Hy vọng là bạn đã đọc một số cuốn sách Access trước khi bắt tay mò mẫm sử dụng.
 
Nhưng bạn thử như thế này thì biết "Trường Key" (cái này tôi gọi cho dễ hiểu thôi nhé)

- Bước 1: bạn mở một Table lên
- Bước 2: chuyển table đó về chế độ Design, bạn quan sát cạnh bên trái, dòng nào có hình cái khoá đó là Key
Thật ra e cũng ko rành về Access nên với chỉ dẫn e cũng ko tìm ra được, vậy e gửi file Access lên nhờ a tìm giúp [Trường Key] và Key theo công thức:
Select [Frame] From [Element Forces - Frames] Where [Trường Key] = Key]
.(từ đó e biết được kết quả mà e tìm không ra).....Chân thành cảm ơn anh!!
 
Với Table bạn tạo, bạn không thiết đặt Key cho Table, vậy thì không thể chọn 1 record với 1 key đại diện. Tôi tạo thử 1 trường ID làm key và tạo 1 Query GPE với truy vấn cho bạn tham khảo.
 

File đính kèm

có lẽ e hiểu 1 chút ý của anh! nhưng dữ liệu của e là mặc định, như vậy để tìm theo yêu cầu bài #1 của e là phải tạo thêm 1 trường khác mới có thể lấy cái ô tô màu đó ra được,...không có cách khác ko cần phải thêm [trường] mà vẫn lấy được cái ô tô màu đó sao?
 
Chào các a(c) trong GPE, trong Excel thì địa chỉ của 1 ô thì e biết đc. ví dụ: A1, range("A1") or cells(1,1). Nhưng trong Access thì e không biết được vì nó không hiện ra tên cột và hàng, như vậy trong Access e chỉ biết được địa chỉ của một [trường] thôi. ví dụ:
View attachment 124871
như trên hình, để tìm (chọn) trường [Frame] thì công thức là:
SELECT [Frame] FROM [Element Forces - Frames] có nghĩa là chọn hết dữ liệu của cột (trường) [Frame]
như vậy muốn chọn 1 ô View attachment 124872(tô màu) trong cột (trường) [Frame] thì công thức như thế nào?
xin chân thành cảm ơn!!


Theo mình, cách bạn nói là dùng mắt Excel để nhin Access nên phải hiểu và lập luận theo Excell. Vậy thì không có lý do gì lại không làm được điều đó. Để xác định vị trí của 1 ô trên bảng tính phải biết dòng và cột. Trên Table cũng vậy, không có lý gì mà ta không lấy được giá trị của Cột nào đó tại dòng nào đó. Sơ đẳng là ta bò từ đầu bảng đến dòng đó để lấy dữ liệu. Đối với trường hợp này người ta hay dùng hàm Dlookup
 
Một cách để bạn tuỳ biến
Mã:
Sub Timkiem()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Element Forces - Frames")
    For i = 1 To [COLOR=#ff0000][B]2[/B][/COLOR]
        rs.MoveNext
    Next
    MsgBox rs.Fields("[COLOR=#0000ff][B]Frame[/B][/COLOR]")
End Sub

Số 2 là vị trí dòng cần lấy
Frame là cột cần lấy
 
Theo mình, cách bạn nói là dùng mắt Excel để nhin Access nên phải hiểu và lập luận theo Excell. Vậy thì không có lý do gì lại không làm được điều đó. Để xác định vị trí của 1 ô trên bảng tính phải biết dòng và cột. Trên Table cũng vậy, không có lý gì mà ta không lấy được giá trị của Cột nào đó tại dòng nào đó.
e muốn chỉ muốn lấy 1 trong các ô trong [trường] Frame của file Access vào file Excel với đoạn code sau:

mySQL = "SELECT [Frame] " & _
"FROM [Element Forces - Frames] "
lrs.Open mySQL, cnn, 3, 1
With Sheet2
.[B6].CopyFromRecordset lrs
End With
lrs.Close

nên công thức theo bài #2 e cũng hiểu chút ít, vì vậy với code trên a có thể tùy chỉnh giúp e lấy địa chỉ 1 trong các ô trong [trường] Frame, ô nào cũng được?
mong đc hồi đáp. chân thành cảm ơn...!!!
 
e muốn chỉ muốn lấy 1 trong các ô trong [trường] Frame của file Access vào file Excel với đoạn code sau:

mySQL = "SELECT [Frame] " & _
"FROM [Element Forces - Frames] "
lrs.Open mySQL, cnn, 3, 1
With Sheet2
.[B6].CopyFromRecordset lrs
End With
lrs.Close

nên công thức theo bài #2 e cũng hiểu chút ít, vì vậy với code trên a có thể tùy chỉnh giúp e lấy địa chỉ 1 trong các ô trong [trường] Frame, ô nào cũng được?
mong đc hồi đáp. chân thành cảm ơn...!!!
Bạn tìm hiểu thêm về phương thức .getrows nhé.
 
Theo đúng lý thuyết CSDL Liên Hệ, các dòng được ghi vào bảng không bắt buộc phải theo một thứ tự nào cả. Vì vậy, lúc truy vấn ra, cũng không có gì bảo đảm thứ tự của chúng. Ngôn ngữ SQL dùng lệnh Order By để bảo đảm thứ tự theo trị của một vài trường nào đó.

Lý thuyết trên hoàn toàn áp dụng cho ADO, bởi vì ADO trheo sát luật. Nhưng DAO thì khác, công cụ này theo sát thực chất của CSDL hơn. Vì vậy, dùng DAO bạn có khả năng lấy được các dòng theo thứ tự ghi vào, nếu bảng không có index.

Với yêu cầu của bạn, bạn có 2 chọn lựa:

1. Nếu bạn muốn lấy vị trí theo đúng thứ tự ghi vào (lưu ý là vì bạn dùng DAO nên điều này có thể được, tuy không bảo đảm 100%. Nếu dùng ADO thì quên đi)

Dùng phương thức getRows để đổ recordset vào một mảng và dò mảng để lấy vị trí. (Dò thẳng từng record cũng được)

2. Nếu bạn muốn lấy vị trí theo thứ tự của trị thì dùng cấu lệnh:

SELECT Count(tenTruong) As ViTri From Bang Where tenTruong <= 'trị của trường'
 
Web KT

Bài viết mới nhất

Back
Top Bottom