View Single Post
  #2  
Old March 22nd, 2010, 01:20 PM posted to microsoft.public.access.forms
Daryl S[_2_]
external usenet poster
 
Posts: 881
Default Show only free IP addresses when selecting address to certain devi

Sandroid -

In order to see records that are not in both tables of a join, you need an
outer join instead of an inner join. change INNER to LEFT, and then you can
add your criteria, like this:

SELECT tblIP.ID, [ip] & "." & [ip2] & "." & [ip3] & "." & [ip4] AS [IP-
number], tblDevice.ipID
FROM tblIP LEFT JOIN tblDevice ON tblIP.ID = tblDevice.ipID
ORDER BY tblIP.ip, tblIP.ip2, tblIP.ip3, tblIP.ip4
WHERE (((tblDevice.ipID) Is Null));

As for the IP Addresses, I would normally store the ip address in a single
text field, unless for some reason you need to work with the individual parts.

--
Daryl S


"Sandroid" wrote:

There is one-to-one relationship between IP table and Device table.

IP table has ID (primary key) and four ip fields.
Device table has ipID field (foreign key) and other fields which are
not relevant to this matter.

The probles is that in the device form the ip dropdown now only shows
the reserved IPs, not the free IPs from IP table.

The query in dropdown is as follows:

SELECT tblIP.ID, [ip] & "." & [ip2] & "." & [ip3] & "." & [ip4] AS [IP-
number], tblDevice.ipID
FROM tblIP INNER JOIN tblDevice ON tblIP.ID = tblDevice.ipID
ORDER BY tblIP.ip, tblIP.ip2, tblIP.ip3, tblIP.ip4;

the result set shows only IP numbers that has assigned to device.

if I add condition
WHERE (((tblDevice.ipID) Is Null)), so I want a "negation" (show all
records in IP table that has not assigned to device (free), the result
set is empty)

Now what?

btw. Is it right to have IPs in four separate fields? Is there a
better way?

Sandroid
.