That's not how it works, you are missing an essential bit of information: in stead of using the entity position, you need to figure out what way your entity is pointing right now? Acquiring that info might be as simple as using your current rotation matrix and multiplying it with a unit vector down the z-axis (or whatever the "neutral" direction of the entity is), but that all depends on your particular setup.
Once you have both direction vectors (your current direction, and the direction to the new desired location... the last one being the normalized "myEntity.Pos - posToPointAt"), you use a function like below to calculate the rotation between the directions. Notice I use quaternions here, you might be needing a rotation matrix.
function RotationBetweenVectors( const aV1, aV2: TVector3): TQuaternion;
const
EPSILON = 0.000001;
var
v1: TVector3;
v2: TVector3;
dot: FloatT;
s: FloatT;
invS: FloatT;
c: TVector3;
begin
v1 := aV1.normalize;
v2 := aV2.normalize;
dot := VectorDotProduct( v1, v2 );
if dot >= 1 then
begin
// INFO: DotProduct = 1 -> vectors are the same
result := QUATERNION_IDENTITY
end
else if ( dot < EPSILON - 1 ) then
begin
raise Exception.create( '180 degree rotation currently not supported.' );
end
else
begin
s := sqrt( 2 * ( 1 + dot ));
invS := 1 / s;
c := VectorCrossProduct( v1, v2 );
result.x := c.x * invS;
result.y := c.y * invS;
result.z := c.z * invS;
result.w := 0.5 * s;
result := result.normalize;
end;
end;